Pagini recente » Cod sursa (job #3159250) | Cod sursa (job #837168) | Cod sursa (job #1710932) | Cod sursa (job #1640008) | Cod sursa (job #2182590)
#include <iostream>
#include <fstream>
using namespace std;
const int nmax=7005;
int A[nmax],B[nmax];
long long len,poz,n;
int mod,t0,t1,a,b,x,y,z,i;
pair<int,int> p0,p1;
pair<int,int> ff(pair<int,int> X)
{
return {X.second,A[X.first]+B[X.second]-mod*(A[X.first]+B[X.second]>=mod)};
}
int nr(long long l)
{
p0={t0,t1};
for(i=1;i<=l;i++)
p0=ff(p0);
return p0.first;
}
int main()
{
ifstream f("rsir.in");
ofstream g("rsir.out");
f>>t0>>t1>>a>>b>>x>>y>>z>>mod>>n;
t0%=mod,t1%=mod;
for(i=0;i<mod;i++)
{
A[i]=((((i*i)%mod)*a)%mod+(x*i)%mod+z)%mod;
B[i]=((((i*i)%mod)*b)%mod+(y*i)%mod)%mod;
}
p0={t0,t1};p0=ff(p0);p1=ff(p0);
while(p0!=p1)
{
p0=ff(p0);
p1=ff(ff(p1));
}
p0={t0,t1};poz=0;
while(p0!=p1)
{
p0=ff(p0);
p1=ff(p1);
poz++;
}
p1=ff(p0);len=1;
while(p1!=p0)
{
p1=ff(p1);
len++;
}
p0={t0,t1};
if(n<poz) g<<nr(n)<<'\n';
else g<<nr(poz+(n-poz)%len)<<'\n';
return 0;
}