Cod sursa(job #138328)

Utilizator raduzerRadu Zernoveanu raduzer Data 18 februarie 2008 11:52:00
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>

int n,x,y,z,q,a[1010],e,s,sum,x1,y1,z1;

int main()
{
	freopen("koba.in","r",stdin);
	freopen("koba.out","w",stdout);
	scanf("%d%d%d%d",&n,&x,&y,&z);
	int i,j;
	x%=10;
	y%=10;
	z%=10;
	a[(x*10+y)*10+z]=1;
	s=x+y+z;
	for (i=4; i<=n; ++i)
	{
		q=(z+x*y)%10;
		x=y;
		y=z;
		z=q;
		s+=z;
		e=(x*10+y)*10+z;
		if (a[e]>0) break;
		a[e]=i-2;
	}
	if (i<n)
	{
		i=i-3;
		s=s-(x+y+z);
		sum=x+y+z;
		x1=x;
		y1=y;
		z1=z;
		for (j=a[e]+3; j<=i; ++j)
		{
			q=(z+x*y)%10;
			x=y;
			y=z;
			z=q;
			sum+=z;
		}
		s=s+((n-i)/(i-a[e]+1))*sum;
		x=x1;
		y=y1;
		z=z1;
		n=(n-i)%(i-a[e]+1);
		if (n==1) s+=x;
		if (n==2) s+=x+y;
		if (n==3) s+=x+y+z;
		if (n>3)
		{
			s+=x+y+z;
			for (j=4; j<=n; ++j)
			{
				q=(z+x*y)%10;
				x=y;
				y=z;
				z=q;
				s+=z;
			}
		}
	}
	
	printf("%d",s);
	return 0;
}