Pagini recente » Cod sursa (job #510771) | Cod sursa (job #1781900) | Cod sursa (job #1748228) | Cod sursa (job #2970960) | Cod sursa (job #1709467)
#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;
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;
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]);
}
}
return 0;
}