Pagini recente » Cod sursa (job #2632152) | Cod sursa (job #1807255) | Cod sursa (job #1577275) | Cod sursa (job #1493871) | Cod sursa (job #1420051)
#include <fstream>
#include <utility>
#define MMAX 7005
using namespace std;
int mod, z;
int prec1[MMAX];
int prec2[MMAX];
pair <int, int> _next (const pair <int, int> &_pair) {
int aux = prec1[_pair.first] + prec2[_pair.second] + z;
while (aux >= mod)
aux -= mod;
return make_pair(_pair.second, aux);
}
int main()
{
ifstream cin("rsir.in");
ofstream cout("rsir.out");
int t0, t1, a, b, x, y, n;
cin >> t0 >> t1 >> a >> b >> x >> y >> z >> mod >> n;
if (!n) {
cout << t0 << '\n';
cin.close();
cout.close();
return 0;
}
n--;
for (int i = 0; i < mod; i++) {
prec1[i] = (i * ((i * a + x) % mod)) % mod;
prec2[i] = (i * ((i * b + y) % mod)) % mod;
}
pair <int, int> t = make_pair(t0, t1), h = make_pair(t0, t1);
do {
t = _next(t);
h = _next(_next(h));
} while (t != h);
int tail = 0;
t = make_pair(t0, t1);
while (t != h) {
t = _next(t);
h = _next(h);
tail ++;
}
int cycle = 1;
t = _next(t);
while (t != h) {
t = _next(t);
cycle ++;
}
if (n < tail) {
t = make_pair(t0, t1);
for (int i = 0; i < n; i++)
t = _next(t);
cout << t.second << '\n';
cin.close();
cout.close();
}
t = make_pair(t0, t1);
for (int i = 0; i < tail; i++)
t = _next(t);
n -= tail;
n %= cycle;
for (int i = 0; i < n; i++)
h = _next(h);
cout << h.second << '\n';
cin.close();
cout.close();
return 0;
}