Pagini recente » Cod sursa (job #1142585) | Cod sursa (job #1857803) | Cod sursa (job #1804839) | Cod sursa (job #2847768) | Cod sursa (job #1679284)
# include <fstream>
# define DIM 7010
using namespace std;
ifstream fin("rsir.in");
ofstream fout("rsir.out");
struct inter {
int f;
int s;
};
inter a1,v1,v2;
long long n;
int a,b,x,y,z,m,MOD,e1,e2,c,i,l,prin[DIM],sec[DIM];
inter next (inter a1){
int aux=a1.s;
a1.s=a1.f;
a1.f=prin[a1.f]+sec[aux];
if(a1.f>=MOD)
a1.f-=MOD;
return a1;
}
int main () {
fin>>e1>>e2>>a>>b>>x>>y>>z>>m>>n;
e1%=m;
e2%=m;
a %=m;
b %= m;
x %= m;
y %= m;
z %= m;
v1.f=e2;
v1.s=e1;
v2.f=e2;
v2.s=e1;
MOD=m;
for(i=0;i<=m;i++){
prin[i]=(1LL*b*i*i+y*i+z)%MOD;
sec[i]=(1LL*a*i*i+x*i)%MOD;
}
do{
v1=next(v1);
v2=next(next(v2));
}
while(v1.f!=v2.f||v1.s!=v2.s);
v2=v1;
do{
v2=next(v2);
c++;
}
while(v1.f!=v2.f||v1.s!=v2.s);
v1.f=e2;
v1.s=e1;
v2=v1;
for(i=2;i<=c+1;i++){
v1=next(v1);
}
while(v1.f!=v2.f||v1.s!=v2.s){
v2=next(v2);
v1=next(v1);
l++;
}
v2.f=v1.f;
v2.s=v1.s;
v1.f=e2;
v1.s=e1;
if(l>=n){
for(i=1;i<=n;i++)
v1=next(v1);
fout<<v1.s<<"\n";
}
else{
n-=l;
n%=c;
for(i=1;i<=n;i++){
v2=next(v2);
}
fout<<v2.s<<"\n";
}
return 0;
}