Pagini recente » Cod sursa (job #975170) | Cod sursa (job #2490727) | Cod sursa (job #1096) | Cod sursa (job #564821) | Cod sursa (job #2517470)
/// orz tourist
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
long long get_x(long long n, long long l) {
long long val = 2LL * n / l - l + 1;
if (val % 2) {
return -1;
}
val /= 2;
if (val >= 1) {
return val;
} else {
return -1;
}
}
void print(long long n, vector<long long> sol) {
for (auto &len : sol) {
long long l = get_x(n, len), r = l + len - 1;
printf("%d %d\n", l, r);
}
}
int32_t main() {
freopen ("consecutive.in", "r", stdin);
freopen ("consecutive.out", "w", stdout);
long long t;
scanf("%d", &t);
while (t--) {
vector<long long> sol, rev;
long long n;
scanf("%d", &n);
long long val = 2 * n;
for (long long i = 1; i * i <= val; i++) {
if (val % i == 0) {
if (i > 1 && get_x(n, i) != -1) {
sol.push_back(i);
}
if (i * i != val && get_x(n, val / i) != -1) {
rev.push_back(val / i);
}
}
}
printf("%d\n", (long long) sol.size() + (long long) rev.size());
reverse(rev.begin(), rev.end());
print(n, sol);
print(n, rev);
}
}