Cod sursa(job #137365)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 17 februarie 2008 11:40:56
Problema Koba Scor 90
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasele 5-8 Marime 1.07 kb
#include<stdio.h>
int t1,t2,t3,aux;
long n,suma;


void read()
{
freopen("koba.in","r",stdin);
freopen("koba.out","w",stdout);
scanf("%ld%d%d%d",&n,&t1,&t2,&t3);
t1=t1%10;
t2=t2%10;
t3=t3%10;
suma=t1+t2+t3;
}


int rez()
{
int aux;
long i,lim=0,ci=0,cs=0,repetitie=0,resuma=0;
int t=0,a=0;

for(i=4;i<=n;i++)
	{
	aux=t1;
	t1=t2;
	t2=t3;
	t3=((aux*t1)%10+t2)%10;
	suma=suma+t3;
	if((t1==t2) && (t2==t3))
		{
		t=t1;
		a=aux;
		ci=i;
		break;
		}
	}
if(i==(n+1))
	return 0;
cs=suma;
for(i=ci+1;i<=n;i++)
	{
	aux=t1;
	t1=t2;
	t2=t3;
	t3=((aux*t1)%10+t2)%10;
	cs=cs+t3;
	if((t1==t2) && (t2==t3) && (t3==t) && (aux==a))
		break;
	}
cs=cs-t3;
i--;
repetitie=i-ci+1;
resuma=cs-suma+t;
n=n-i;
suma=cs;
suma=suma+(n/repetitie)*resuma;
lim=n%repetitie;
if(lim)
	{
	suma=suma+t;
	aux=a;
	t1=t2=t3=t;
	for(i=2;i<=lim;i++)
		{
		aux=t1;
		t1=t2;
		t2=t3;
		t3=((aux*t1)%10+t2)%10;
		suma=suma+t3;
		}
	}
return 0;
}


void write()
{
printf("%ld",suma);
}


int main()
{
int temp;
read();
temp=rez();

write();
return 0;
}