Cod sursa(job #972593)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 12 iulie 2013 11:10:37
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
using namespace std;
int n,lg,v[1010],sum[1010],poz[1010],sumper;
long long sol;

int main()
{
	int i=4,x;
	ifstream fin("koba.in");
	fin>>n>>v[1]>>v[2]>>v[3];
	fin.close();
	
	v[1]%=10;	v[2]%=10;	v[3]%=10;
	poz[v[1]]=1;	sum[1]=v[1];
	poz[v[1]*10+v[2]]=2;	sum[2]=v[1]+v[2];
	poz[v[1]*100+v[2]*10+v[3]]=3;	sum[3]=v[1]+v[2]+v[3];
	while(1)
	{
		v[i]=(v[i-1]+v[i-2]*v[i-3])%10;
		sum[i]=sum[i-1]+v[i];
		x=v[i-2]*100+v[i-1]*10+v[i];
		if(poz[x]==0)
			poz[x]=i;
		else
		{
			lg=i-poz[x];
			sumper=sum[i]-sum[poz[x]];
			sol=1LL*sum[poz[x]-1];
			sol+=(1LL*(n-poz[x]+1)/lg)*sumper;
			n=(n-poz[x]+1)%lg;
			sol+=1LL*(sum[poz[x]+n-1]-sum[poz[x]-1]);
			break;
		}
		i++;
	}
	
	ofstream fout("koba.out");
	fout<<sol<<"\n";
	fout.close();
	return 0;
}