Pagini recente » Monitorul de evaluare | Cod sursa (job #1595796) | Cod sursa (job #2785663) | Cod sursa (job #1008663) | Cod sursa (job #1713866)
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("consecutive.in");
ofstream out("consecutive.out");
int v[10000001],cat[10000001];
int sumak(long long n,int k)
{
unsigned int a,b;
a=(n-(k*(k-1)/2))/k;
b=a+k-1;
if((a+b)*k/2==n)
return a;
else
return -1;
}
int main()
{
long long cate,s,n;
int t,cnt,i,j;
in>>t;
for(i=1;i<=t;i++)
{
in>>n;
cate=2;
cnt=0;
j=0;
s=sqrt(3*n);
while(cate<=s)
{
if(sumak(n,cate)!=-1)
{
j++;
cnt++;
v[j]=sumak(n,cate);
cat[j]=cate;
}
cate++;
}
out<<cnt<<'\n';
for(j=1;j<=cnt;j++)
out<<v[j]<<" "<<v[j]+cat[j]-1<<'\n';
}
return 0;
}