Pagini recente » Cod sursa (job #2970487) | Cod sursa (job #1337593) | Cod sursa (job #1545299) | Cod sursa (job #320672) | Cod sursa (job #1715149)
#include <bits/stdc++.h>
#define pb push_back
#define f first
#define s second
#define pii pair<long long, long long>
#define mp make_pair
using namespace std;
const string name = "consecutive",
in_file = name + ".in",
out_file = name + ".out";
ifstream fin(in_file);
ofstream fout(out_file);
int t;
long long n;
vector<pii> all;
bool func(pii a, pii b) {
return (a.s - a.f) < (b.s - b.f);
}
void solveSystem(long long i) {
long long a = min(i, 2 * n / i), b = max(i, 2 * n / i);
if ((b - a - 1) % 2 != 0 || (b + a - 1) % 2 != 0)
return;
all.push_back(make_pair((b - a - 1) / 2 + 1, (b + a - 1) / 2));
}
int main() {
fin >> t;
for (; t; t--) {
fin >> n;
all.clear();
for (long long i = 2; (1LL * i * i) <= 2 * n; i++)
if ((2 * n) % i == 0)
solveSystem(i);
sort(all.begin(), all.end(), func);
fout << all.size() << '\n';
for (auto p : all)
fout << p.f << ' ' << p.s << '\n';
}
return 0;
}