Cod sursa(job #174661)

Utilizator AndreyPAndrei Poenaru AndreyP Data 9 aprilie 2008 09:07:07
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
int n,t[4],v[1010],sir[1010];
int marcat[1010];
int main()
{
	freopen("koba.in","r",stdin);
	freopen("koba.out","w",stdout);
	int i,ok=1,abc,aux,x1,x2,per=-1,sper,s,p,k;
	scanf("%d",&n);
	scanf("%d%d%d",&t[1],&t[2],&t[3]);
	t[1]%=10;
	t[2]%=10;
	t[3]%=10;
	sir[1]=t[1];
	sir[2]=t[2];
	sir[3]=t[3];
	marcat[t[1]*100+t[2]*10+t[3]]=3;
	v[1]=t[1];
	v[2]=v[1]+t[2];
	v[3]=v[2]+t[3];
	for(i=4; (ok)&&(i<=n); i++)
	{
		sir[i]=(sir[i-1]+sir[i-2]*sir[i-3])%10;
		v[i]=v[i-1]+sir[i];
		abc=sir[i-2]*100+sir[i-1]*10+sir[i];
		if(marcat[abc]==0)
			marcat[abc]=i;
		else
		{
			ok=0;
			x1=marcat[abc];
			x2=i;
			per=x2-x1;
			sper=v[x2]-v[x1];
		}
	}
	if(per==-1)
		printf("%d\n",v[n]);
	else
	{
		p=x1-1;
		s=v[p];
		k=n-p;
		aux=k/per;
		s+=sper*aux;
		aux=k%per;
		aux+=x1;
		for(i=x1; i<aux; i++)
			s+=sir[i];
		printf("%d\n",s);
	}
	return 0;
}