Cod sursa(job #171968)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 5 aprilie 2008 15:22:16
Problema Koba Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
int a[10][10][10],a1,a2,a3,a4,s=0,n,suma[300000];
int solutie(int x,int y){
	return y-x+1;
}
int caut(){
	int i;
	s=a1+a2+a3;
	suma[1]=a1;
	suma[2]=suma[1]+a2;
	suma[3]=suma[2]+a3;
	a[a1][a2][a3]=1;
	for(i=4;i<=n;i++){
		a4=(a3+a2*a1)%10;
		a1=a2;a2=a3;a3=a4;
		if(a[a1][a2][a3]>0) return i-1;
		a[a1][a2][a3]=i;
		suma[i]=suma[i-1]+a4;
		s+=a4;
	}
	return 0;
}
int main(){
	int x,z,sum,y,i;
	freopen("koba.in","r",stdin);
	freopen("koba.out","w",stdout);
	scanf("%d%d%d%d",&n,&a1,&a2,&a3);
	a3%=10;a2%=10;a1%=10;
	z=caut();
	sum=suma[z]-suma[a[a1][a2][a3]-1];
	n=n-z;
	x=n/(z-a[a1][a2][a3]+1);
	y=n%(z-a[a1][a2][a3]+1);
	s+=x*sum;
	s+=a4;
	for(i=1;i<y;i++){
		a4=(a3+a2*a1)%10;
		a1=a2;a2=a3;a3=a4;
		s+=a4;
	}
	printf("%d",s);
}