Cod sursa(job #779741)

Utilizator maritimCristian Lambru maritim Data 18 august 2012 17:26:06
Problema Koba Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>

FILE *f = fopen("koba.in","r");
FILE *g = fopen("koba.out","w");

#define MaxT 1100

int N,T1,T2,T3,Sol;
int A[MaxT],Best[MaxT];

void citire(void)
{
	fscanf(f,"%d %d %d %d\n",&N,&T1,&T2,&T3);
}

void Rezolvare(void)
{
	int aux,i,nr;
	
	T1 %= 10; T2 %= 10; T3 %= 10;
	
	Sol += T1 + T2 + T3;
	A[T3] = 1; Best[T3] = T3;
	A[T2*10+T3] = 2; Best[T2*10+T3] = T2+T3;
	A[T1*100+T2*10+T3] = 3;
	Best[T1*100+T2*10+T3] = Sol;
	
	for(i=4;i<=N;i++)
	{
		aux = (T3 + T2*T1)%10,T1 = T2,T2 = T3,T3 = aux,Sol += aux;
		nr = T1*100+T2*10+T3;
		
		if(A[nr])
			break;
		
		Best[nr] = Sol;
		A[nr] = i;
	}
	
	N -= i;
	Sol += (N/(i-A[nr]))*(Sol-Best[nr]);
	N %= (i-A[nr]);
	
	for(i=1;i<=N;i++)
		aux = (T3 + T2*T1)%10,T1 = T2,T2 = T3,T3 = aux,Sol += aux;
}

int main()
{
	citire();
	Rezolvare();
	
	fprintf(g,"%d\n",Sol);
}