Pagini recente » Cod sursa (job #1149126) | Cod sursa (job #2227777) | Cod sursa (job #1869253) | Cod sursa (job #1666741) | Cod sursa (job #2275841)
#include<bits/stdc++.h>
using namespace std;
int t0,t1,a,b,x,y,z,n,m;
int cyc,lch;
pair<int,int> nxt(pair<int,int> p)
{
int nx=(a*p.first*p.first+b*p.second*p.second+x*p.first+y*p.second+z)%m;
return make_pair(p.second,nx);
}
int main()
{
freopen("rsir.in","r",stdin);
freopen("rsir.out","w",stdout);
scanf("%d%d%d%d%d%d%d%d%d",&t0,&t1,&a,&b,&x,&y,&z,&m,&n);
t0%=m;
t1%=m;
a%=m;
b%=m;
x%=m;
y%=m;
z%=m;
if(!n)
{
printf("%d\n",t0);
return 0;
}
if(n==1)
{
printf("%d\n",t1);
return 0;
}
pair<int,int> p1,p2;
p1={t0,t1};
p2={t0,t1};
do
{
p1=nxt(p1);
p2=nxt(nxt(p2));
}while(p1!=p2);
do
{
p1=nxt(p1);
cyc++;
}while(p1!=p2);
p1=p2={t0,t1};
for(int i=0;i<cyc;i++)
p2=nxt(p2);
int lch=0;
while(p1!=p2)
{
++lch;
p1=nxt(p1);
p2=nxt(p2);
}
if(n>lch) n=lch+(n-lch)%cyc;
pair<int,int> sol={t0,t1};
for(int i=1;i<n;i++)
sol=nxt(sol);
printf("%d\n",sol.second);
return 0;
}