Pagini recente » Cod sursa (job #1806131) | Cod sursa (job #322413) | Cod sursa (job #1898542) | Cod sursa (job #8727) | Cod sursa (job #1837464)
#include <fstream>
#include <algorithm>
#include <utility>
#include <vector>
#define int long long int
using namespace std;
pair <int, int> get_pair(int n, int N) {
int a = ((2 * N) / n - n + 1);
if (a & 1)
return make_pair(0, 0);
a /= 2;
if (a >= 1)
return make_pair(n, a);
else
return make_pair(0, 0);
}
ifstream cin("consecutive.in");
ofstream cout("consecutive.out");
void solve(int N) {
vector <pair <int, int> > sol;
pair <int, int> p;
for (int n = 1; n * n <= 2 * N; ++ n)
if ((2 * N) % n == 0) {
p = get_pair(n, N);
if (p.first)
sol.push_back(p);
if (n * n != N) {
p = get_pair((2 * N) / n, N);
if (p.first)
sol.push_back(p);
}
}
sort(sol.begin(), sol.end());
cout << sol.size() - 1 << '\n';
for (vector <pair <int, int> > :: iterator it = sol.begin() + 1; it != sol.end(); ++ it)
cout << it -> second << ' ' << it -> first + it -> second - 1 << '\n';
}
signed main()
{
int t = 0;
cin >> t;
while (t --) {
int n = 0;
cin >> n;
solve(n);
}
cin.close();
cout.close();
return 0;
}