Cod sursa(job #1710309)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 28 mai 2016 19:34:38
Problema Consecutive Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.82 kb
#include <cstdio>
#define MAXN 65536
int v[2][MAXN];
int main(){
   FILE*fi,*fout;
   int pas,m,i,t;
   long long n,x,rez,l;
   fi=fopen("consecutive.in" ,"r");
   fout=fopen("consecutive.out" ,"w");
   fscanf(fi,"%d" ,&t);
   while(t>0){
      t--;
      fscanf(fi,"%lld" ,&n);
      l=2;
      m=0;
      while((l*(l+1))<=2*n){
          rez=0;
          for(pas=1<<30;pas;pas>>=1){
              x=rez+pas;
              if((x*(x+1))/2-((x-l)*(x-l+1))/2<n)
                 rez+=pas;
          }
          rez++;
          if((rez*(rez+1))/2-((rez-l)*(rez-l+1))/2==n){
              v[0][m]=rez-l+1;
              v[1][m]=rez;
              m++;
          }
          l++;
      }
      fprintf(fout,"%d\n" ,m);
      for(i=0;i<m;i++)
         fprintf(fout,"%d %d\n" ,v[0][i],v[1][i]);
   }

   fclose(fi);
   fclose(fout);
   return 0;
}