Pagini recente » Cod sursa (job #3143951) | Cod sursa (job #194209) | Cod sursa (job #578236) | Cod sursa (job #946059) | Cod sursa (job #1761022)
#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, aux; i<=n && i<=m*m; ++i ) {
for ( aux= k1[t0]+k2[t1]+z; aux>=m; aux-= m ) ;
t0= t1, t1= aux;
}
if ( n>m*m ) {
int ans= 0, last0= t0, last1= t1;
for ( int i= 1, aux; i<=n-m*m && ans==0; ++i ) {
for ( aux= k1[t0]+k2[t1]+z; aux>=m; aux-= m ) ;
t0= t1, t1= aux;
if ( last0==t0 && last1==t1 ) {
ans= i;
}
}
n= (n-m*m)%ans;
for ( int i= 1, aux; i<=n; ++i ) {
for ( aux= k1[t0]+k2[t1]+z; aux>=m; aux-= m ) ;
t0= t1, t1= aux;
}
}
fout<<t0<<"\n";
return 0;
}