Cod sursa(job #485936)

Utilizator Teodor94Teodor Plop Teodor94 Data 19 septembrie 2010 22:34:59
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>

const int N=15;

int n,t1,t2,t3,t4,s,last=-1,l,suma;
int a[N][N][N],sum[1000];

void rez()
{
	scanf("%d%d%d%d",&n,&t1,&t2,&t3);
	t1%=10;
	t2%=10;
	t3%=10;
	a[t1][t2][t3]=3;
	sum[1]=t1;
	sum[2]=t1+t2;
	sum[3]=t1+t2+t3;
	if (n<4)
	{
		printf("%d\n",sum[n]);
		return;
	}
	s=t1+t2+t3;
	for (int i=4;i<=n;++i)
	{
		t4=t3+t2*t1;
		t4%=10;
		t1=t2;
		t2=t3;
		t3=t4;
		sum[i]=sum[i-1]+t3;
		if (a[t1][t2][t3])
		{
			last=i;
			break;
		}
		a[t1][t2][t3]=i;
	}
	if (last==-1)
		last=a[t1][t2][t3];
	suma=sum[a[t1][t2][t3]];
	l=last-a[t1][t2][t3];
	if (l)
	{
		n-=a[t1][t2][t3];
		s=sum[last]-sum[a[t1][t2][t3]];
		suma+=(n/l)*s;
		suma+=sum[last-l+n%l]-sum[a[t1][t2][t3]];
	}
	printf("%d\n",suma);
}

int main()
{
	freopen("koba.in","r",stdin);
	freopen("koba.out","w",stdout);
	rez();
	return 0;
}