Pagini recente » Cod sursa (job #2506670) | Cod sursa (job #2237931) | Cod sursa (job #1403612) | Cod sursa (job #20023) | Cod sursa (job #1275206)
#include <cstdio>
#include <algorithm>
using namespace std;
int a,b,x,y,z,mod,v1[7010],v2[7010];
pair<int,int> nextelement(pair<int,int> p)
{
int t=p.first,t1=p.second;
return make_pair(t1,(v1[t]+v2[t1])%mod);
}
int main()
{
freopen("rsir.in", "r", stdin);
freopen("rsir.out", "w", stdout);
int t0,t1,nr1=0,nr2=0;
long long n;
scanf("%d%d%d%d%d%d%d%d%lld",&t0,&t1,&a,&b,&x,&y,&z,&mod,&n);
t0%=mod;t1%=mod;
if(n==0)
{
printf("%d",t0);
return 0;
}
for(int i=0;i<=mod;i++)
{
v1[i]=(1LL*a*i*i+x*i+z)%mod;
v2[i]=(1LL*b*i*i+y*i)%mod;
}
pair<int,int> p=make_pair(t0,t1),p1=make_pair(t0,t1);
while(1)
{
nr1++;
p=nextelement(p);
p1=nextelement(nextelement(p1));
if(p==p1) break;
}
if(n<=nr1)
{
p=make_pair(t0,t1);
for(int i=2;i<=n;i++) p=nextelement(p);
printf("%d",p.second);
return 0;
}
while(1)
{
nr2++;
p=nextelement(p);
if(p==p1) break;
}
n=(n-nr1)%nr2;
if(!n) n+=nr2;
for(int i=2;i<=n;i++) p=nextelement(p);
printf("%d",p.second);
return 0;
}