Pagini recente » Cod sursa (job #1348547) | Cod sursa (job #543393) | Cod sursa (job #602198) | Cod sursa (job #2747020) | Cod sursa (job #1710424)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
pair<int,int> solution[50000];
#define dim (1<<21)
#define margin 100
char buffer[dim];
char* position;
void initialize(){
position=buffer;
}
void dump(){
*position=0;
printf("%s",buffer);
initialize();
}
void print(int number){
char* start=position;
if(number==0){
*position='0';
position++;
}
while(number>0){
*position=number%10+'0';
number/=10;
position++;
}
reverse(start,position);
if(position-buffer+margin > dim)
dump();
}
void print(char ch){
*position=ch;
position++;
if(position-buffer+margin > dim)
dump();
}
int main(){
freopen("consecutive.in","r",stdin);
freopen("consecutive.out","w",stdout);
int tests,test,i,solutionCount;
long long n,l,x,x0;
scanf("%d",&tests);
initialize();
for(test=1;test<=tests;test++){
scanf("%lld",&n);
solutionCount=0;
for(l=2;l*(l-1)/2<n;l++){
x=(n-l*(l-1)/2);
x0=x/l;
if(x0*l==x){
solutionCount++;
solution[solutionCount]=make_pair(x0,x0+l-1);
}
}
print(solutionCount);
print('\n');
for(i=1;i<=solutionCount;i++){
print(solution[i].first);
print(' ');
print(solution[i].second);
print('\n');
}
}
dump();
return 0;
}