Pagini recente » Cod sursa (job #561598) | Cod sursa (job #1627864) | Cod sursa (job #2831131) | Cod sursa (job #2931614) | Cod sursa (job #1808796)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rsir.in");
ofstream out("rsir.out");
long long t0,t1,a,b,x,y,z,mod,n,p[2][7001];
pair<int,int> next(pair<int,int> q)
{
int v=p[0][q.first]+p[1][q.second];
if(v>=mod)v-=mod;
return make_pair(q.second, v);
}
int main()
{
in>>t0>>t1>>a>>b>>x>>y>>z>>mod>>n;
if(n==0)
{
out<<t0;
return 0;
}
if(n==1)
{
out<<t1;
return 0;
}
for(int i=0; i<mod; ++i)
{
p[0][i]=(((i*i)%mod)*a+i*x+z)%mod;
p[1][i]=(((i*i)%mod)*b+i*y)%mod;
}
pair<int,int> p1(t0%mod,t1%mod),p2(p1);
if (n < 1000000){
for (int i = 1; i < n; ++i) p1 = next(p1);
out<<p1.second;
return 0;
}
int i=1;
do{
i++;
p1=next(p1);
p2=next(next(p2));
}while(p1!=p2);
n=(n-i)%(i-1);
for(i=0;i<n;++i)p1=next(p1);
out<<p1.second;
return 0;
}