Cod sursa(job #342343)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 21 august 2009 13:11:24
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

int a[1000], ap[1000], i,n,suma,s,nr,x;

inline int f(int x,int y,int z)
{ return x*100+y*10+z; }

int main()
{
	freopen("koba.in","r",stdin);
	freopen("koba.out","w",stdout);
	scanf("%d %d %d %d",&n,&a[1],&a[2],&a[3]);
	a[1]%=10; a[2]%=10; a[3]%=10;
	ap[f(a[1],a[2],a[3])]=1;
	a[4]=(a[3]+a[2]*a[1]) % 10; i=4;
	while (!ap[f(a[i-2],a[i-1],a[i])] && i<=n)
	{
		ap[f(a[i-2],a[i-1],a[i])]=i-2;
		i++;
		a[i]=(a[i-1]+a[i-2]*a[i-3]) % 10;
	}
	x=f(a[i-2],a[i-1],a[i]);
	suma=0;
	nr=i-3;
	if (ap[x]){
		for (i=1; i<ap[x]; i++)
			suma+=a[i];
		n=(n-ap[x]+1);
		for (i=ap[x]; i<=nr; i++)
			s+=a[i];
		suma+=(n / (nr-ap[x]+1))*s;
		n%=(nr-ap[x]+1);
		for (i=1; i<=n; i++)
			suma+=a[i+ap[x]-1];
	}
	else 
		for (i=1; i<=n; i++)
			suma+=a[i];
	printf("%d\n",suma);
	return 0;
}