Pagini recente » Cod sursa (job #3192982) | Cod sursa (job #956762) | Cod sursa (job #3222181) | Cod sursa (job #3202515) | Cod sursa (job #137365)
Cod sursa(job #137365)
#include<stdio.h>
int t1,t2,t3,aux;
long n,suma;
void read()
{
freopen("koba.in","r",stdin);
freopen("koba.out","w",stdout);
scanf("%ld%d%d%d",&n,&t1,&t2,&t3);
t1=t1%10;
t2=t2%10;
t3=t3%10;
suma=t1+t2+t3;
}
int rez()
{
int aux;
long i,lim=0,ci=0,cs=0,repetitie=0,resuma=0;
int t=0,a=0;
for(i=4;i<=n;i++)
{
aux=t1;
t1=t2;
t2=t3;
t3=((aux*t1)%10+t2)%10;
suma=suma+t3;
if((t1==t2) && (t2==t3))
{
t=t1;
a=aux;
ci=i;
break;
}
}
if(i==(n+1))
return 0;
cs=suma;
for(i=ci+1;i<=n;i++)
{
aux=t1;
t1=t2;
t2=t3;
t3=((aux*t1)%10+t2)%10;
cs=cs+t3;
if((t1==t2) && (t2==t3) && (t3==t) && (aux==a))
break;
}
cs=cs-t3;
i--;
repetitie=i-ci+1;
resuma=cs-suma+t;
n=n-i;
suma=cs;
suma=suma+(n/repetitie)*resuma;
lim=n%repetitie;
if(lim)
{
suma=suma+t;
aux=a;
t1=t2=t3=t;
for(i=2;i<=lim;i++)
{
aux=t1;
t1=t2;
t2=t3;
t3=((aux*t1)%10+t2)%10;
suma=suma+t3;
}
}
return 0;
}
void write()
{
printf("%ld",suma);
}
int main()
{
int temp;
read();
temp=rez();
write();
return 0;
}