Pagini recente » Cod sursa (job #245534) | Cod sursa (job #169485) | Cod sursa (job #3258202) | Cod sursa (job #1644498) | Cod sursa (job #1733563)
#include<cstdio>
#include<vector>
#define MAXM 7010
using namespace std;
pair<int,int> t0,t1;
int a,b,x,y,z,m;
long long n;
int A[MAXM],B[MAXM];
pair<int,int> f(pair<int,int> x){
int answer=A[x.first]+B[x.second];
if(answer>=m)
answer-=m;
return make_pair(x.second,answer);
}
int main(){
freopen("rsir.in","r",stdin);
freopen("rsir.out","w",stdout);
int i,l,answer;
scanf("%d%d%d%d%d%d%d%d%lld",&t0.first,&t0.second,&a,&b,&x,&y,&z,&m,&n);
for(i=0;i<m;i++){
A[i]=((((i*i)%m)*a)%m+(i*x)%m)%m;
B[i]=((((i*i)%m)*b)%m+(i*y+z)%m)%m;
}
t0.first%=m;
t0.second%=m;
for(t1=f(t0);n>=0&&t1!=t0;t0=f(t0),t1=f(f(t1)),n--)
if(n==0)
answer=t0.first;
for(l=1,t1=f(t0);n>=0&&t1!=t0;t1=f(t1),l++);
if(n>0)
for(n=n%l;n>=0;t0=f(t0),n--)
if(n==0)
answer=t0.first;
printf("%d",answer);
return 0;
}