Pagini recente » Cod sursa (job #235725) | Cod sursa (job #2007994) | Cod sursa (job #984566) | Cod sursa (job #585556) | Cod sursa (job #1640367)
#include <fstream>
using namespace std;
const int MAX_MOD = 7000;
pair <int, int> M[MAX_MOD];
int MOD;
inline
int W(const int &A) {
return A - (MOD & -(A >= MOD));
}
inline
void F(pair <int, int> &curr) {
curr = { curr.second, W(M[curr.first].first + M[curr.second].second) };
}
int main() {
ifstream fin("rsir.in");
ofstream fout("rsir.out");
fin.tie(0);
ios_base::sync_with_stdio(false);
pair <int, int> T; int A, B, X, Y, Z; long long N; fin >> T.first >> T.second >> A >> B >> X >> Y >> Z >> MOD >> N;
fin.close();
T.first %= MOD; T.second %= MOD;
for (int i = 0; i < MOD; ++ i) {
M[i] = { (1LL * A * i * i + 1LL * X * i + Z) % MOD, (1LL * B * i * i + 1LL * Y * i) % MOD };
}
pair <int, int> tortoise, hare;
int periodLength = 0;
tortoise = T; hare = T;
do {
if (periodLength == N) {
fout << tortoise.first << '\n';
fout.close();
return 0;
}
++ periodLength;
F(tortoise); F(hare); F(hare);
} while (hare != tortoise);
N %= periodLength;
while (N--) {
F(tortoise);
}
fout << tortoise.first << '\n';
fout.close();
return 0;
}