Pagini recente » Cod sursa (job #2357581) | Cod sursa (job #1431581) | Cod sursa (job #3270606) | Cod sursa (job #541080) | Cod sursa (job #600291)
Cod sursa(job #600291)
# include <algorithm>
# include <cstdio>
using namespace std;
# define x first
# define y second
typedef long long ll;
typedef pair <int, int> PR;
const char *FIN = "rsir.in", *FOU = "rsir.out";
const int MAX = 7005;
ll N;
PR T;
int A, B, X, Y, Z, M, sol, ind = 1;
int P[2][MAX];
inline int _mod (ll A) {
if (A > M) A -= M;
if (A > M) A %= M;
return A;
}
PR doit (PR T) {
return make_pair (T.y, _mod (P[0][T.x] + P[1][T.y]));
}
int main (void) {
fscanf (fopen (FIN, "r"), "%d %d %d %d %d %d %d %d %lld", &T.x, &T.y, &A, &B, &X, &Y, &Z, &M, &N);
for (int i = 0; i < M; ++i) {
P[0][i] = _mod (1LL * i * i * A + 1LL * i * X);
P[1][i] = _mod (1LL * i * i * B + 1LL * i * Y + 1LL * Z);
}
T.x = _mod (T.x), T.y = _mod (T.y);
for (PR t = doit (doit (T)); N + 1 && T != t; T = doit (T), t = doit (doit (t)), --N)
if (N == 0) sol = T.x;
if (N + 1)
for (PR t = doit (T); T != t; t = doit (t), ++ind);
if (N > 0) {
for (N %= ind; N + 1; T = doit (T), --N)
if (N == 0) sol = T.x;
}
fprintf (fopen (FOU, "w"), "%d", sol);
}