Pagini recente » Cod sursa (job #2768467) | Cod sursa (job #2390490) | Cod sursa (job #2682177) | Cod sursa (job #1975197) | Cod sursa (job #2957893)
// this program should not work!!!
#include <iostream>
#include <fstream>
#define int long long
using namespace std;
ifstream fin("rsir.in");
ofstream fout("rsir.out");
const int MODMAX = 7000;
int a, b, x, y, z, mod, n;
int T[MODMAX + 1];
signed main(){
fin >> T[1] >> T[2];
fin >> a >> b >> x >> y >> z >> mod >> n, ++n;
T[1] %= mod;
T[2] %= mod;
for(int i = 3; i <= MODMAX; i++){
T[i] = ((a * T[i - 2] * T[i - 2]) % mod + (b * T[i - 1] * T[i - 1]) % mod + (x * T[i - 2]) % mod + (y * T[i - 1]) % mod + z) % mod;
}
int slow = 1;
int fast = 1;
do{
slow++;
fast += 2;
}while(T[slow] != T[fast]);
int cycLen = fast - slow;
slow = 1;
while(T[slow] != T[fast]){
++slow;
++fast;
}
int tailLen = slow - 1;
if(n <= tailLen){
fout << T[n] << '\n';
}else{
n -= tailLen;
n %= cycLen;
if(n == 0){
n = cycLen;
}
n += tailLen;
fout << T[n] << '\n';
}
return 0;
}