Pagini recente » Cod sursa (job #1041431) | Cod sursa (job #1772344) | Cod sursa (job #883437) | Cod sursa (job #1872392) | Cod sursa (job #340566)
Cod sursa(job #340566)
#include <stdio.h>
int N,t1,t2,t3,a[10][10][10],X,Y,p1,p2,p3;
int solve()
{
if (N==1) return t1;
if (N==2) return t1+t2;
if (N==3) return t1+t2+t3;
int s=0,i,t=0;
if (X==1) s=t1;
else if (X==2) s=t1+t2;
else if (X==3) s=t1+t2+t3;
else
{
s=t1+t2+t3;
for (i=4;i<=X;++i)
{
t=(t3+t1*t2)%10;
t1=t2;t2=t3;t3=t;
s+=t;
}
}
int k=(N-X)/Y;
int sp=p1+p2+p3;
t1=p1;t2=p2;t3=p3;
for (i=4;i<=Y;++i)
{
t=(p3+p2*p1)%10;
p1=p2;p2=p3;p3=t;
sp+=t;
}
s+=sp*k;
int r=N-X-Y*k;
if (r==1) s+=t1;
else if (r==2) s+=t1+t2;
else if (r==3) s+=t1+t2+t3;
else
if (r>=4)
{
s+=t1+t2+t3;
for (i=4;i<=r;++i)
{
t=(t3+t2*t1)%10;
t1=t2;t2=t3;t3=t;
s+=t;
}
}
return s;
}
int main()
{
int i,x,A,B,C;
fscanf(fopen("koba.in","r"),"%d %d %d %d",&N,&t1,&t2,&t3);
t1%=10;t2%=10;t3%=10;
A=t1;B=t2;C=t3;
a[t1][t2][t3]=1;
for (i=4;i<=N;++i)
{
x=(t3 + t2*t1)%10;
t1=t2;t2=t3;t3=x;
if (!a[t1][t2][t3]) a[t1][t2][t3]=i-2;
else
{
p1=t1;p2=t2;p3=t3;
X=a[t1][t2][t3]-1;
Y=i-2-a[t1][t2][t3];
break;
}
}
t1=A;t2=B;t3=C;
fprintf(fopen("koba.out","w"),"%d",solve());
return 0;
}