Pagini recente » Cod sursa (job #1347850) | Cod sursa (job #986581) | Cod sursa (job #431707) | Cod sursa (job #3196096) | Cod sursa (job #1708977)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int n;
scanf("%d", &n);
vector<pair<int,int> > v;
int diff;
long long nn = 2LL * n;
long long lim = (int)sqrt(nn) + 1; lim = max(lim, nn);
for(diff = 1; diff <= lim; diff++)
{
int tmp = diff + 1;
if (nn % tmp != 0) continue;
tmp = nn / tmp;
if ((tmp + diff) & 1) continue;
long long b = tmp + diff;
b /= 2;
long long a = tmp - b;
if (a <= 0) continue;
v.push_back(make_pair(a,b));
}
int ans = v.size();
printf("%d\n", ans);
for(int i = 0; i < ans; i++) {
printf("%d %d\n", v[i].first , v[i].second);
}
}
return 0;
}