Pagini recente » Cod sursa (job #785459) | Cod sursa (job #2864854) | Cod sursa (job #2483111) | Cod sursa (job #96886) | Cod sursa (job #1709884)
#include <stdio.h>
#include <stdlib.h>
long long asd[1000][2];
int db;
int main()
{
freopen("consecutive.in","r",stdin);
freopen("consecutive.out","w",stdout);
int t;
scanf("%d",&t);
long long n;
long long m;
long long i;
long long s;
long long min;
int j;
long long temp;
while(t--){
scanf("%lli",&n);
/*m = n/2 +(n%2==1?1:0);
//printf("%lli\n",m);
min = n;
db = 0;
//elso
s = m;
i = m;
while(s<n){
s += (--i);
}
if(s==n){
asd[db][0] = i;
asd[db][1] = m;
++db;
}
//printf("elso %lli\n",s);
while(1){
//printf("awd %lli %lli\n",s,m);
s -= m;
--m;
if(((i+1)*0.5*i + s)<(n)) break;
while(s<n){
s += (--i);
if(i<1) break;
}
if(s==n){asd[db][0] = i; asd[db][1] = m; ++db;}
if(i<1) break;
}
/*while(1){
s = m;
i = m;
while(s<n){
s += (--i);
if(i<min) min = i;
}
if(s==n){
//printf("%lli %lli\n",i,m);
asd[db][0] = i;
asd[db][1] = m;
++db;
}
if(min<=1) break;
//printf("m: %lli min: %lli\n",m,min);
--m;
}*/
/*printf("%d\n",db);
for(j = 0;j<db;++j){
printf("%lli %lli\n",asd[j][0],asd[j][1]);
}*/
db = 0;
m = (1 + sqrt(1+8*n))/2;
for(i=1;i<m;++i){
double a = (((2*n)/(i+1.0)) -i)/2;
if(a==((long long)a) && a>=1){
++db;
asd[db][0] = (long long)a;
asd[db][1] = ((long long)a)+i;
}
}
printf("%d\n",db);
for(j = 1;j<=db;++j){
printf("%lli %lli\n",asd[j][0],asd[j][1]);
}
}
return 0;
}