Cod sursa(job #470430)

Utilizator mihai995mihai995 mihai995 Data 13 iulie 2010 19:17:51
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
using namespace std;

struct koba{short int a,b,c;};
koba v[1<<10];
bool use[10][10][10];
int d,n,x,y,z;

ifstream in("koba.in");
ofstream out("koba.out");

inline bool cmp(koba a,koba b)
{
	return a.a==b.a && a.b==b.b && a.c==b.c;
}

void search()
{
	int i,j;
	v[1].a=x;v[1].b=y;v[1].c=z;
	use[x][y][z]=true;
	for (i=2;i<1000;i++)
	{
		v[i].a=(v[i-1].a+v[i-1].b*v[i-1].c)%10;
		v[i].b=v[i-1].a;
		v[i].c=v[i-1].b;
		if (use[v[i].a][v[i].b][v[i].c])
		{
			for (j=1;j<i;j++)
				if (cmp(v[i],v[j]))
				{
					x=j;
					y=i-1;
					z=i-j;
					return;
				}
		}
		use[v[i].a][v[i].b][v[i].c]=true;
	}
}

int main()
{
	int i,q;
	long long s=0;
	in>>n>>z>>y>>x;
	x%=10;y%=10;z%=10;
	s=z+y*(n>1);n-=2;
	search();
	if (n>y)
	{
		q=(n-x)/z;
		n-=q*z;
		for (i=x;i<=y;i++)
			s+=q*(v[i].a);
	}
	for (i=1;i<=n;i++)
		s+=v[i].a;
	out<<s<<"\n";
	return 0;
}