Pagini recente » Cod sursa (job #2331191) | Cod sursa (job #2404268) | Cod sursa (job #1915752) | Cod sursa (job #1469347) | Cod sursa (job #2155621)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rsir.in");
ofstream out("rsir.out");
const int NMAX = 7 * 1e3;
int t0, t1, a, b, x, y, z, m, n;
int res, l0, l1;
int v1[1 + NMAX];
int v2[1 + NMAX];
int main()
{
in >> t0 >> t1 >> a >> b >> x >> y >> z >> m >> n;
t0 %= m;
t1 %= m;
for(int i = 0; i < m; i++) {
v1[i] = (i * x + i * i % m * a) % m;
v2[i] = (i * y + i * i % m * b) % m;
}
for(int i = 1; i <= min(n, m * m); i++) {
int j = v1[t0] + v2[t1] + z;
while(j >= m)
j -= m;
t0 = t1;
t1 = j;
}
if(m * m < n) {
res = 0;
l0 = t0;
l1 = t1;
for(int i = 1; i <= n - m * m && res == 0; i++) {
int j = v1[t0] + v2[t1] + z;
while(j >= m)
j -= m;
t0 = t1;
t1 = j;
if(l0 == t0 && l1 == t1)
res = i;
}
n = (n - m * m) % res;
for(int i = 1; i <= n; i++){
int j = v1[t0] + v2[t1] + z;
while(j >= m)
j -= m;
t0 = t1;
t1 = j;
}
}
out << t0 << '\n';
in.close();
out.close();
return 0;
}