Pagini recente » Cod sursa (job #864059) | Cod sursa (job #423970) | Cod sursa (job #3291049) | Cod sursa (job #946962) | Cod sursa (job #2517468)
/// orz tourist
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int get_x(int n, int l) {
long long val = 2LL * n / l - l + 1;
if (val & 1) {
return -1;
}
val /= 2;
if (val >= 1) {
return val;
} else {
return -1;
}
}
void print(int n, vector<int> sol) {
for (auto &len : sol) {
int l = get_x(n, len), r = l + len - 1;
printf("%d %d\n", l, r);
}
}
int main() {
freopen ("consecutive.in", "r", stdin);
freopen ("consecutive.out", "w", stdout);
int t;
scanf("%d", &t);
while (t--) {
vector<int> sol, rev;
int 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", (int) sol.size() + (int) rev.size());
reverse(rev.begin(), rev.end());
print(n, sol);
print(n, rev);
}
}