Pagini recente » Cod sursa (job #465504) | Cod sursa (job #2711013) | Cod sursa (job #515019) | Cod sursa (job #1703015) | Cod sursa (job #112167)
Cod sursa(job #112167)
#include<stdio.h>
#define Mm 7000
int main()
{
int V0[Mm],V1[Mm],T0,T1,a,b,x,y,z,m,t0,t1,t2,a0,a1,a2,i,k,l;
long long n;
freopen("rsir.in","r",stdin);
scanf("%d%d%d%d%d%d%d%d%lld",&T0,&T1,&a,&b,&x,&y,&z,&m,&n);
for(i=0;i<m;++i)
{
V0[i]=(a*i%m*i+x*i)%m;
V1[i]=(b*i%m*i+y*i)%m;
}
t0=T0%m; t1=T1%m; k=m*m;
for(i=1;i<k;++i)
{
t2=V0[t0]+V1[t1]+z;
if(t2>=m)
t2-=m;
if(t2>=m)
t2-=m;
t0=t1; t1=t2;
}
a0=t0; a1=t1; k=0;
do
{
a2=V0[a0]+V1[a1]+z;
if(a2>=m)
a2-=m;
if(a2>=m)
a2-=m;
a0=a1; a1=a2; ++k;
} while(a0!=t0 || a1!=t1);
a0=t0=T0%m; a1=t1=T1%m;
for(i=0;i<k;++i)
{
t2=V0[t0]+V1[t1]+z;
if(t2>=m)
t2-=m;
if(t2>=m)
t2-=m;
t0=t1; t1=t2;
}
l=0;
while(a0!=t0 || a1!=t1)
{
++l;
t2=V0[t0]+V1[t1]+z;
if(t2>=m)
t2-=m;
if(t2>=m)
t2-=m;
t0=t1; t1=t2;
a2=V0[a0]+V1[a1]+z;
if(a2>=m)
a2-=m;
if(a2>=m)
a2-=m;
a0=a1; a1=a2;
}
if(n<l)
t0=T0%m, t1=T1%m, k=n;
else
k=(n-l)%k;
for(i=0;i<k;++i)
{
t2=V0[t0]+V1[t1]+z;
if(t2>=m)
t2-=m;
if(t2>=m)
t2-=m;
t0=t1; t1=t2;
}
freopen("rsir.out","w",stdout);
printf("%d\n",t0);
return 0;
}