Pagini recente » Cod sursa (job #2302007) | Cod sursa (job #1787678) | Cod sursa (job #1866103) | Cod sursa (job #1798462) | Cod sursa (job #1709572)
#include <stdio.h>
#include <math.h>
#define MAX 65536
int T;
long long N;
long long sums[MAX];
FILE* fout;
long long result[10000];
int maxx;
void generateSums()
{
for(int i=0; i<MAX; i++)
{
sums[i] = (i*(i+1))/2;
}
}
void calculate()
{
for(int i=1; i<MAX; i++)
{
if(sums[i]>=N)
return;
float y = (float)(N-sums[i]);
float x = (float)(y/((float)i+1));
if(x == floor(x))
{
result[2*maxx] = (int)x;
result[2*maxx+1] = (int)x+i;
maxx++;
}
}
}
int main()
{
FILE *fin = fopen("consecutive.in", "r");
fout = fopen("consecutive.out", "w");
int v = fscanf(fin,"%d", &T);
generateSums();
for(int i=0; i<T; i++)
{
maxx = 0;
fscanf(fin,"%lld",&N);
calculate();
fprintf(fout,"%d\n", maxx);
for(int k=0; k<maxx; k++)
{
fprintf(fout,"%lld %lld\n",result[2*k], result[2*k+1]);
}
}
fclose(fin);
fclose(fout);
return 0;
}