Cod sursa(job #178817)

Utilizator drag0shSandulescu Dragos drag0sh Data 15 aprilie 2008 10:11:43
Problema 12-Perm Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <stdio.h>
FILE *f,*g;
//int t[5][3000000];
long n,i,j,ini,ant1,ant3,r;
long long x1,x2,x3,x4;
int main(){
    f=fopen("12perm.in","r");
    g=fopen("12perm.out","w");
    fscanf(f,"%ld",&n);
    /*
    t[1][1]=1;t[2][1]=2;t[3][1]=6;t[4][1]=12;//t[4][2]=1;
    t[1][0]=1;
    t[2][0]=1;
    t[3][0]=1;
    t[4][0]=1;
//    fprintf(g,"%d",n);
    for(j=5;j<=n;j++){
                       if(j%4)ini=j%4;
                           else ini=4;;      
                      ant1=ini-1;
                      ant3=ini+1;
                      if(ant1==0)ant1=4;
                      if(ant3==5)ant3=1;
                   //   fprintf(g,"%d*",ant1);
                      for(i=1,r=2*(j-2); i<=t[ant1][0]||r||i<=t[ant3][0] ; i++,r/=10000){
                                                                          r+=t[ant1][i]+t[ant3][i];
                                                                          t[ini][i]=r%10000;
                                                                         }
                      t[ini][0]=i-1;
                      }
   ini=n%4;
   if(!ini)ini=4;
   fprintf(g,"%ld",t[ini][t[ini][0]]);
   for(i=t[ini][0]-1;i>=1;i--)fprintf(g," %04d",t[ini][i]); 
   */
   x1=1;x2=2;x3=6;x4=12;
   long j;
   for(j=5;j<=n;j++) {x1=x2;x2=x3;x3=x4;x4=x3+x1+2*j-4;}
   fprintf(g,"%lld",x4);
                     
   fclose(f);
   fclose(g);
    return 0;
}