Pagini recente » Cod sursa (job #2574604) | Cod sursa (job #2986117) | Arhiva de probleme | Cod sursa (job #742021) | Cod sursa (job #1761021)
#include <fstream>
using namespace std;
ifstream fin("rsir.in");
ofstream fout("rsir.out");
typedef long long i64;
const int mmax= 7000;
int t0, t1, a, b, x, y, z, m;
i64 n;
int k1[mmax+1], k2[mmax+1];
int main( ) {
fin>>t0>>t1>>a>>b>>x>>y>>z>>m>>n;
t0%= m, t1%= m;
for ( int i= 0; i<m; ++i ) {
k1[i]= (i*i%m*a+i*x)%m;
k2[i]= (i*i%m*b+i*y)%m;
}
for ( int i= 1; i<=n && i<=m*m; ++i ) {
int aux= (k1[t0]+k2[t1]+z)%m;
t0= t1, t1= aux;
}
if ( n>m*m ) {
int ans= 0, last0= t0, last1= t1;
for ( int i= 1; i<=n-m*m && ans==0; ++i ) {
int aux= (k1[t0]+k2[t1]+z)%m;
t0= t1, t1= aux;
if ( last0==t0 && last1==t1 ) {
ans= i;
}
}
n= (n-m*m)%ans;
for ( int i= 1; i<=n; ++i ) {
int aux= (k1[t0]+k2[t1]+z)%m;
t0= t1, t1= aux;
}
}
fout<<t0<<"\n";
return 0;
}