Cod sursa(job #3138433)

Utilizator user12345user user user user12345 Data 19 iunie 2023 16:13:15
Problema Rsir Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("rsir.in");
ofstream fout("rsir.out");

int t0, t1, a, b, x, y, z, mod, n;
int aux1[7005], aux2[7005];
int Begin, Len;

#define Next(p) make_pair(p.second, aux1[p.first] + aux2[p.second] - (aux1[p.first] + aux2[p.second] >= mod ? mod : 0))

int main() {

    fin >> t0 >> t1;
    fin >> a >> b;
    fin >> x >> y >> z;
    fin >> mod >> n;

    t0 %= mod;
    t1 %= mod;

    for (int i = 0; i < mod; i++) {

        aux1[i] = ((a * i) % mod * i % mod + x * i % mod + z) % mod;
        aux2[i] = ((b * i) % mod * i % mod + y * i % mod) % mod;
    }

    pair <int, int> p1, p2;

    p1 = {t0, t1};
    p2 = {t0, t1};

    do{

        p1 = Next(p1);
        p2 = Next(p2), p2 = Next(p2);

    }while (p1 != p2);

    p1 = {t0, t1};

    while (p1 != p2) {

        p1 = Next(p1);
        p2 = Next(p2);
        Begin++;
    }

    do{

        p2 = Next(p2);
        Len++;

    }while (p1 != p2);

    if (n > Begin)
        n = Begin + (n - Begin) % Len;
    p1 = {t0, t1};

    for (int i = 1; i <= n; i++)
        p1 = Next(p1);

    fout << p1.first;

    return 0;
}