Cod sursa(job #138389)

Utilizator katakunaCazacu Alexandru katakuna Data 18 februarie 2008 15:56:58
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>

int ci,sd,nr,in,sin,p,e,i,k,ok,n,a,b,d,c,v[3][1001],s[1001];


int main(){

FILE *f=fopen("koba.in","r");
FILE *g=fopen("koba.out","w");
fscanf(f,"%d %d %d %d",&n,&a,&b,&c);
fclose(f);

a=a%10;
b=b%10;
c=c%10;

s[1]=a;
s[2]=b;
s[3]=c;
//d=(c+b*a)%10;

//v[0][c*100+b*10+a]=1;
//v[1][c*100+b*10+a]=1;
//v[2][c*100+b*10+a]=d;

ok=1;

k=3;

 while(ok){
 d=(c+b*a)%10;
 e=c*100+b*10+a;
 k++;
   if(v[0][e]==1)break;

 s[k]=d;
 v[0][e]=1;
 v[1][e]=k;
 v[2][e]=d;

 if(k==n)break;

 a=b;
 b=c;
 c=d;

 }

 k-=4;
 p=v[1][e]-3;

 if(k==n){


    for(i=1;i<=n;i++){
    sin+=s[i];
    }



 }


 else{

 in=p-1;

   for(i=1;i<=in;i++){
   sin+=s[i];
   }


  nr=n-in;
  ci=k-p+1;

  for(i=p;i<=k;i++){
  sd+=s[i];
  }


  sin+=sd*(nr/ci);

  for(i=p;i<=p+(nr%ci)-1;i++){
  sin+=s[i];
  }


 }


fprintf(g,"%d",sin);

fclose(g);
return 0;
}