Cod sursa(job #342455)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 21 august 2009 19:49:04
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
#define k(a,b,c) a*100+b*10+c
int n,t1,t2,t3,t4,s,i,m,poz,sum,lim;
int f[1000];
int main()
{
	freopen("koba.in","r",stdin);
	freopen("koba.out","w",stdout);
	scanf("%d%d%d%d",&n,&t1,&t2,&t3);
	t1=t1%10;t2=t2%10;t3=t3%10;
	s=t1;
	f[k(t1,t2,t3)]=1;
	for(i=2;i<=n;i++)
	{
		t4=(t1*t2+t3)%10;
		t1=t2;t2=t3;t3=t4;
		if(f[k(t1,t2,t3)])
		{
			m=i-f[k(t1,t2,t3)];
			n=n-i+1;
			break;
		}
		f[k(t1,t2,t3)]=i;
		s+=t1;
	}
	if(i>n)
	{
		printf("%d\n",s);
		return 0;
	}
	poz=k(t1,t2,t3);
	f[poz]=0;
	while(!f[poz])
	{
		sum=sum+t1;
		t4=(t1*t2+t3)%10;
		t1=t2;t2=t3;t3=t4;
		f[k(t1,t2,t3)]=1;
	}
	s=s+((int)(n/m))*sum;
	lim=n%m;
	for(i=1;i<=lim;i++)
	{
		s=s+t1;
		t4=(t1*t2+t3)%10;
		t1=t2;t2=t3;t3=t4;
	}
	printf("%d\n",s);
	return 0;
}