Cod sursa(job #327581)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 29 iunie 2009 14:56:49
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#define Nmax 10000005
#define B 1005

int a[Nmax];
long b[B];
int T1,T2,T3;
long n,i,S,sum,ok,nr,j,poz;

int main(){
	freopen("koba.in","r",stdin);
   freopen("koba.out","w",stdout);
   scanf("%ld%d%d%d",&n,&T1,&T2,&T3);
   a[1]=T1 % 10; a[2]=T2 % 10; a[3]=T3 % 10;
   S=0; ok=0;
   for(i=4;i<=n && !ok; ++i){
   	a[i]= (a[i-1] + a[i-2]*a[i-3]) % 10;
      nr=a[i]+a[i-1]*10+a[i-2]*100;
      if(b[nr]==0) b[nr]=i;
      else{
         sum=0;
      	poz=b[nr]; // poz la care incepe perioada
         for(j=1;j<=poz;++j) S += a[j];
         for(j=poz+1;j<=i;++j) sum +=a[j];
         S += ((n-poz) / (i-poz)) * sum;
         for(j=poz+1;j<=poz+(n-poz) % (i-poz);++j) S +=a[j];
         ok=1; // ca sa iasa din for;
      }
   }
   if(!ok)
     for(j=1;j<=n;++j) S +=a[j];

   printf("%ld\n",S);
   fclose(stdin); fclose(stdout);
   return 0;
}