Cod sursa(job #2957893)

Utilizator indmium_Voicu Buhai Imperiu indmium_ Data 23 decembrie 2022 19:01:24
Problema Rsir Scor 10
Compilator cpp-64 Status done
Runda 49maimare48 Marime 1.1 kb
// 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;
}