Pagini recente » Cod sursa (job #1438387) | Cod sursa (job #1978264) | Istoria paginii utilizator/madalindobrila | Cod sursa (job #2794315) | Cod sursa (job #1219528)
#include <algorithm>
#include <cstdio>
using namespace std;
const int Mmax = 7005;
int Mod[5 * Mmax], Moda[Mmax], Modb[Mmax], Modx[Mmax], Mody[Mmax];
int main()
{
freopen("rsir.in", "r", stdin);
freopen("rsir.out", "w", stdout);
int T0, T1, a, b, x, y, z, M;
long long n;
scanf("%d%d%d%d%d%d%d%d%lld", &T0, &T1, &a, &b, &x, &y, &z, &M, &n);
T0 %= M;
T1 %= M;
for (int i = 1; i < 5 * M; i++)
Mod[i] = Mod[i - 1] + 1 == M ? 0: Mod[i - 1] + 1;
for (int i = 0; i < M; i++) {
Moda[i] = 1LL * i * i * a % M;
Modb[i] = 1LL * i * i * b % M;
Modx[i] = i * x % M;
Mody[i] = i * y % M;
}
///
int n10 = T0, n11 = T1, n20 = T1, n21 = Mod[Moda[T0] + Modb[T1] + Modx[T0] + Mody[T1] + z];
for (bool i = false; ; i = !i) {
int aux;
aux = Mod[Moda[n20] + Modb[n21] + Modx[n20] + Mody[n21] + z];
n20 = n21;
n21 = aux;
if (i) {
aux = Mod[Moda[n10] + Modb[n11] + Modx[n10] + Mody[n11] + z];
n10 = n11;
n11 = aux;
}
if (n10 == n20 && n11 == n21) {
aux = Mod[Moda[n20] + Modb[n21] + Modx[n20] + Mody[n21] + z];
n20 = n21;
n21 = aux;
break;
}
}
int Clen = 1;
while (n10 != n20 || n11 != n21) {
int aux = Mod[Moda[n20] + Modb[n21] + Modx[n20] + Mody[n21] + z];
n20 = n21;
n21 = aux;
++Clen;
}
n10 = T0, n11 = T1, n20 = T0, n21 = T1;
for (int i = 1; i <= Clen; i++) {
int aux = Mod[Moda[n20] + Modb[n21] + Modx[n20] + Mody[n21] + z];
n20 = n21;
n21 = aux;
}
int Slen = 0;
while (n10 != n20 || n11 != n21) {
int aux = Mod[Moda[n20] + Modb[n21] + Modx[n20] + Mody[n21] + z];
n20 = n21;
n21 = aux;
aux = Mod[Moda[n10] + Modb[n11] + Modx[n10] + Mody[n11] + z];
n10 = n11;
n11 = aux;
++Slen;
}
int p0 = n10, p1 = n11;
if (n <= Slen) {
int p = n;
n10 = T0, n11 = T1;
for (int i = 1; i <= p; i++) {
int aux = Mod[Moda[n10] + Modb[n11] + Modx[n10] + Mody[n11] + z];
n10 = n11;
n11 = aux;
}
printf("%d\n", n10);
} else {
int p = (n - Slen) % Clen;
n10 = p0, n11 = p1;
for (int i = 1; i <= p; i++) {
int aux = Mod[Moda[n10] + Modb[n11] + Modx[n10] + Mody[n11] + z];
n10 = n11;
n11 = aux;
}
printf("%d\n", n10);
}
}