Pagini recente » Cod sursa (job #3223184) | Cod sursa (job #344400) | Cod sursa (job #2371922) | Cod sursa (job #2614220) | Cod sursa (job #68471)
Cod sursa(job #68471)
#include <stdio.h>
#include <vector>
using namespace std;
typedef long long lint;
#define mp make_pair
#define PII pair <int,int>
#define f first
#define s second
#define nmax 1<<14
int t0,t1,a,b,x,y,z,m,sol;
int A[nmax],B[nmax];
lint n;
PII f(PII t)
{
int a=A[t.f]+B[t.s];
if(a>=m)
a-=m;
return mp(t.s,a);
}
int main()
{
PII t0,t1;
int l,i;
freopen("rsir.in","r",stdin);
freopen("rsir.out","w",stdout);
scanf("%d %d %d %d %d %d %d %d %lld",&t0.f,&t0.s,&a,&b,&x,&y,&z,&m,&n);
for(i=0;i<m;++i)
{
A[i]=((((i*i)%m)*a)%m+(((i)%m)*x)%m)%m;
B[i]=((((i*i)%m)*b)%m+(((i)%m)*y+z)%m)%m;
}
t0.f%=m, t0.s%=m;
for(l=m*m+1,t1=t0,i=0;i<l;++i)
t1=f(t1);
for(;n>=0&&t1!=t0;t0=f(t0),--n,--l)
if(!n)
sol=t0.f;
if(n>0)
for(n%=l;n>=0;t0=f(t0),--n)
if(!n)
sol=t0.f;
printf("%d\n",sol);
return 0;
}