Pagini recente » Cod sursa (job #2528491) | Cod sursa (job #2217233) | Cod sursa (job #391261) | Cod sursa (job #69889) | Cod sursa (job #1709670)
#include <iostream>
#include <fstream>
#define mkp make_pair
using namespace std;
ifstream si("rsir.in");
ofstream so("rsir.out");
int a,b,x,y,r,v1[7010],v2[7010],mod;
pair<int,int> nxt(pair<int,int> x)
{
int val=v1[x.first]+v2[x.second];
if(val>=mod)
val-=mod;
return mkp(x.second,val);
}
int main()
{
int t0,t1,cpb=0,cb=0;
long long n;
si>>t0>>t1>>a>>b>>x>>y>>r>>mod>>n;
t0%=mod;
t1%=mod;
if(n==0)
{
so<<t0;
return 0;
}
int i;
for(i=0;i<=mod;++i)
{
v1[i]=(1LL*i*i*a+i*x+r)%mod;
v2[i]=(1LL*i*i*b+i*y)%mod;
}
pair<int,int> el1=mkp(t0,t1),el2=mkp(t0,t1);
while(1)
{
cpb++;
if(n==cpb)
{
so<<el1.second;
return 0;
}
el1=nxt(el1);
el2=nxt(nxt(el2));
if(el1==el2)
break;
}
while(1)
{
cb++;
el1=nxt(el1);
if(el1==el2)
break;
}
n=(n-cpb)%cb;
if(n==0)
n=cb;
for(i=2;i<=n;++i)
el1=nxt(el1);
so<<el1.second;
return 0;
}