Cod sursa(job #1745346)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 21 august 2016 17:48:20
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#define BAZA 10000
#define MAXCIF 53
short dp[2][MAXCIF];
int nr[2];
inline int getmax(int a,int b){
   if(a<b) return b;
   return a;
}
int main(){
   FILE*fi,*fout;
   int n,i,j,t;
   fi=fopen("nunta.in" ,"r");
   fout=fopen("nunta.out" ,"w");
   fscanf(fi,"%d" ,&n);
   if(n==1)
     fprintf(fout,"1");
   if(n==2)
     fprintf(fout,"2");
   if(n>2){
     dp[1][0]=1;
     dp[0][0]=2;
     nr[0]=1;
     nr[1]=1;
     for(i=3;i<=n;i++){
         t=0;
         for(j=0;j<getmax(nr[i&1],nr[1-i&1])||t>0;j++){
            t=t+dp[i&1][j]+dp[1-i&1][j];
            dp[i&1][j]=t%BAZA;
            t/=BAZA;
         }
         nr[i&1]=j;
     }
     fprintf(fout,"%d" ,dp[n&1][nr[n&1]-1]);
     for(i=nr[n&1]-2;i>=0;i--){
        if(dp[n&1][i]<10)
          fprintf(fout,"000");
        if(dp[n&1][i]<100)
          fprintf(fout,"00");
        if(dp[n&1][i]<1000)
          fprintf(fout,"0");
        fprintf(fout,"%d" ,dp[n&1][i]);
     }
   }
   fclose(fi);
   fclose(fout);
   return 0;
}