Cod sursa(job #2396898)

Utilizator flibiaVisanu Cristian flibia Data 3 aprilie 2019 22:15:28
Problema Consecutive Scor 100
Compilator cpp-64 Status done
Runda Arhiva ICPC Marime 0.75 kb
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second

using namespace std;

ifstream in("consecutive.in");
ofstream out("consecutive.out");

int t;
ll n;
vector<pair<ll, ll> > v;
set<pair<ll, ll> > s;

int main() {
	in >> t;
	while (t--) {
		in >> n;
		s.clear();
		v.clear();
		n *= 2LL;
		for (ll i = 1; i * i <= n; i++) {
			if (n % i)
				continue;
			s.insert({i, n / i});
			s.insert({n / i, i});
		}
		for (auto it : s) {
			ll p = it.se - it.fi + 1;
			if (p % 2LL)
				continue;
			ll x = p / 2LL;
			if (x <= 0 || it.fi == 1)
				continue;
			v.push_back({x, x + it.fi - 1});
		}
		out << v.size() << '\n';
		for (auto it : v)
			out << it.fi << ' ' << it.se << '\n';
	}
	return 0;
}