Pagini recente » Cod sursa (job #1398333) | Cod sursa (job #2958787) | Cod sursa (job #2972658) | Cod sursa (job #772908) | Cod sursa (job #327581)
Cod sursa(job #327581)
#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;
}