Cod sursa(job #417755)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 14 martie 2010 20:11:05
Problema Rsir Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
int t0,t1,ti0,ti1,a,b,x,y,z,m,v1[7005],v2[7005];
long long n;
inline void next()
{
	int x=(v1[t0]+v2[t1]+z)%m;
	while(x>=m)
		x-=m;
	t0=t1;
	t1=x;
}

void rez()
{
	int i;
	ti0=t0;
	ti1=t1;
	for(i=1,next();ti0!=t0 || ti1!=t1;i++,next());
	n=n%i;
	while(n--)
		next();
	printf("%d\n",t0);
}

int main()
{

	freopen("rsir.in","r",stdin);
	freopen("rsir.out","w",stdout);
	scanf("%d%d%d%d%d%d%d%d%lld",&t0,&t1,&a,&b,&x,&y,&z,&m,&n);
	t0=t0%m;
	t1=t1%m;
	z=z%m;
	int i;
	for(i=0;i<m;i++)
	{
		v1[i]=((long long)a*i*i+x*i)%m;
		v2[i]=((long long)b*i*i+y*i)%m;
	}
	for(i=1;i<=n && i<=m*m;i++)
		next();
	i--;
	n-=i;
	if(!n)
	{
		printf("%d\n",t0);
		return 0;
	}
	rez();
	return 0;
}