Pagini recente » Monitorul de evaluare | Cod sursa (job #1170311) | Monitorul de evaluare | Cod sursa (job #269445) | Cod sursa (job #3303925)
#include <bits/stdc++.h>
using namespace std;
bool verif(long long m, long long n)
{
if(m==1)
{
return false;
}
long long a = n/m-(m-1);
if(a%2==1)
{
return false;
}
a/=2;
if(a<=0)
{
return false;
}
return true;
}
int ras[65536];
int main()
{
FILE *fin, *fout;
fin=fopen ("consecutive.in", "r");
fout=fopen ("consecutive.out", "w");
long long t, n, d, cnt, k, m;
fscanf (fin, "%lld", &t);
for (long long i=1; i<=t; i++)
{
fscanf (fin, "%lld", &n);
n=2*n;
d=1;
k=0;
while(d*d<=n)
{
if(n%d==0)
{
if(verif(d, n))
{
long long a=(n/d-(d-1))/2;
ras[++k]=a;
ras[++k]=a+d-1;
}
if(verif(n/d, n))
{
long long a=(d-(n/d-1))/2;
ras[++k]=a;
ras[++k]=a+n/d-1;
}
}
d++;
}
fprintf(fout, "%lld\n", k/2);
for(long long j=1; j<=k; j+=2)
{
fprintf(fout, "%lld %lld\n", ras[j], ras[j+1]);
}
}
fclose (fin);
fclose (fout);
return 0;
}