Cod sursa(job #1713873)

Utilizator rares_ciocieaRares Andrei Ciociea rares_ciociea Data 6 iunie 2016 20:28:32
Problema Consecutive Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.84 kb
#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 -100;
}
int main()
{
    long long cate,n,s;
    int t,cnt,i,j;
    in>>t;
    for(i=1;i<=t;i++)
    {
        in>>n;
        cate=2;
        cnt=0;
        s=sqrt(4*n);
        while(cate<=s)
        {
            if(sumak(n,cate)!=-100)
            {
                cnt++;
                v[cnt]=sumak(n,cate);
                cat[cnt]=cate;
            }
            cate++;
        }
        out<<cnt<<'\n';
        for(j=1;j<=cnt;j++)
            out<<v[j]<<" "<<v[j]+cat[j]-1<<'\n';
    }
    return 0;
}