Cod sursa(job #299430)

Utilizator n3msizN3msiz n3msiz Data 6 aprilie 2009 19:26:32
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>

int v[1001];
long long n,i,t1,t2,t3,x,p,a,b,c,j,s,t,w,sc,r,aux;

int main(){
	
	FILE *f = fopen("koba.in", "r");
	FILE *g = fopen("koba.out", "w");
	
	fscanf(f,"%lld %lld %lld %lld",&n,&t1,&t2,&t3);
	
	a = t1; b = t2; c = t3;
	for(i=1;i<=1001;i++){
		t1%=10;t2%=10;t3%=10;
		x=t1*100+t2*10+t3;
		if(!v[x])
			v[x]=x;
		else{
			p=v[x];
			break;
		}	
		aux=t3;
		t3=t3+t2*t1;
		t1=t2;
		t2=aux;
	}	  
	
	a%=10;b%=10;c%=10;
	j=a*100+b*10+c;
	w=2;
	s=a+b;
	while(j!=p){
		s+=c;
		w++;
		aux=c;
		c=a*b+c;
		a=b;
		b=aux;
		a%=10;b%=10;c%=10;
		j=a*100+b*10+c;
	}	
	do{
		t++;
		sc+=c;
		aux=c;
		c=a*b+c;
		a=b;
		b=aux;
		a%=10;b%=10;c%=10;
		j=a*100+b*10+c;
	} while(j!=p);
	r=(n-w)%t;
	for(i=1;i<=r;i++){
		s+=c;
		aux=c;
		c=a*b+c;
		a=b;
		b=aux;
		a%=10;b%=10;c%=10;
	}
	s+=(n-w)/t*sc;
	fprintf(g,"%lld",s);
	
	
	fclose(f);
	fclose(g);
	
	return 0;
}