Cod sursa(job #485007)

Utilizator ChallengeMurtaza Alexandru Challenge Data 16 septembrie 2010 19:20:53
Problema Koba Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;

const char InFile[]="koba.in";
const char OutFile[]="koba.out";

ifstream fin(InFile);
ofstream fout(OutFile);

int N,T1,T2,T3,sum;
int psum[1000],a[10][10][10],t=0,l=1,s;


int main()
{
	fin>>N>>T1>>T2>>T3;
	fin.close();

	T1%=10;psum[1]=T1;
	T2%=10;psum[2]=psum[1]+T2;
	T3%=10;psum[3]=psum[2]+T3;
	if(N>3)
	{
		a[T1][T2][T3]=3;
		int last=-1;
		for(register int i=4;i<=N;++i)
		{
			int T4=T3+T2*T1;
			psum[i]=psum[i-1]+T4;
			T4%=10;
			T1=T2;
			T2=T3;
			T3=T4;

			if(a[T1][T2][T3])
			{
				last=i;
				break;
			}
			a[T1][T2][T3]=i;
		}

		if(last==-1)
		{
			last=a[T1][T2][T3];
		}

		sum=psum[a[T1][T2][T3]];
		l=last-a[T1][T2][T3];
		if(l)
		{
			N-=a[T1][T2][T3];
			s=psum[last]-psum[a[T1][T2][T3]];

			sum+=(N/l)*s;
			sum+=psum[last-l+N%l]-psum[a[T1][T2][T3]];
		}
	}
	else
	{
		sum=psum[N];
	}

	fout<<sum;
	fout.close();
	return 0;
}