Pagini recente » Cod sursa (job #661068) | Cod sursa (job #32200) | Cod sursa (job #2245950) | Monitorul de evaluare | Cod sursa (job #1708999)
#include<stdio.h>
#include<algorithm>
#include<cmath>
#include<vector>
#define pb push_back
#define mp make_pair
using namespace std;
int T;
long long n;
vector< pair<int,int> > sol;
bool cmp(const pair<int,int> &A, const pair<int,int> &B){
return (A.second-A.first)<(B.second-B.first);
}
void solve()
{
sol.clear();
n*=2;
int A,B,x,y;
int lim=(int)(sqrt(n));
for(int i=1;i<=lim;i++)
if( n%i==0 )
{
A=i;
B=n/i;
if( (A+B-1)%2!=0 ) continue;
x=(A+B-1)/2;
y=x-A;
if( y<0 )continue;
if( y+1==x ) continue;
sol.pb(mp(y+1,x));
}
sort(sol.begin(),sol.end(),cmp);
}
void print()
{
printf("%d\n",sol.size());
for(unsigned int i=0;i<sol.size();i++)
printf("%d %d\n",sol[i].first, sol[i].second);
}
int main()
{
freopen("consecutive.in","r",stdin);
freopen("consecutive.out","w",stdout);
scanf("%d",&T);
for(;T;T--)
{
scanf("%lld",&n);
solve();
print();
}
return 0;
}