Pagini recente » Cod sursa (job #2831248) | Cod sursa (job #2712078) | Cod sursa (job #2682971) | Cod sursa (job #3288040) | Cod sursa (job #1708960)
#include <cmath>
#include <algorithm>
#include <fstream>
#include <iostream>
using namespace std;
vector< pair<long long, long long> > v;
void solve(long long k, long long n) {
long long value = n / k - k + 1;
if (value > 0 && value % 2 == 0) {
v.push_back(make_pair(value / 2, value / 2 + k - 1));
}
}
int main() {
ifstream cin("consecutive.in");
ofstream cout("consecutive.out");
int t;
long long n;
for (cin >> t; t; -- t) {
v.clear();
cin >> n;
n = 2 * n;
long long k = sqrt(1.0 * n);
for (long long i = 1; i <= k; i += 1) {
if (n % i == 0) {
if (i != 1) {
solve(i, n);
}
if (i * i != n) {
solve(n / i, n);
}
}
}
sort(v.begin(), v.end(), [](const pair<long long, long long> &a, const pair<long long, long long> &b) {
return a.second - a.first < b.second - b.first;
});
cout << v.size() << "\n";
for (auto p : v) {
cout << p.first << " " << p.second << "\n";
}
}
return 0;
}