Pagini recente » Cod sursa (job #1806984) | Cod sursa (job #162766) | Cod sursa (job #1837201) | Cod sursa (job #2494025) | Cod sursa (job #342343)
Cod sursa(job #342343)
#include <stdio.h>
int a[1000], ap[1000], i,n,suma,s,nr,x;
inline int f(int x,int y,int z)
{ return x*100+y*10+z; }
int main()
{
freopen("koba.in","r",stdin);
freopen("koba.out","w",stdout);
scanf("%d %d %d %d",&n,&a[1],&a[2],&a[3]);
a[1]%=10; a[2]%=10; a[3]%=10;
ap[f(a[1],a[2],a[3])]=1;
a[4]=(a[3]+a[2]*a[1]) % 10; i=4;
while (!ap[f(a[i-2],a[i-1],a[i])] && i<=n)
{
ap[f(a[i-2],a[i-1],a[i])]=i-2;
i++;
a[i]=(a[i-1]+a[i-2]*a[i-3]) % 10;
}
x=f(a[i-2],a[i-1],a[i]);
suma=0;
nr=i-3;
if (ap[x]){
for (i=1; i<ap[x]; i++)
suma+=a[i];
n=(n-ap[x]+1);
for (i=ap[x]; i<=nr; i++)
s+=a[i];
suma+=(n / (nr-ap[x]+1))*s;
n%=(nr-ap[x]+1);
for (i=1; i<=n; i++)
suma+=a[i+ap[x]-1];
}
else
for (i=1; i<=n; i++)
suma+=a[i];
printf("%d\n",suma);
return 0;
}