Cod sursa(job #3284631)

Utilizator andiRTanasescu Andrei-Rares andiR Data 11 martie 2025 23:31:33
Problema Rsir Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 kb
// Author: Tanasescu Andrei-Rares
/*
     █████╗  ██████╗ ████████╗
    ██╔══██╗ ██╔══██╗╚══██╔══╝
    ███████║ ██████╔╝   ██║   
    ██╔══██║ ██╔══██╗   ██║   
    ██║  ██║ ██║  ██║   ██║   
    ╚═╝  ╚═╝ ╚═╝  ╚═╝   ╚═╝   
*/
#include <iostream>
#include <fstream>

#pragma GCC optimize("O3")

#define fi first
#define se second
#define pb push_back
#define pf push_front

using namespace std;

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

typedef long long ll;
typedef pair<int, int> pii;

ll a, b, x, y, z, t0, t1, MOD;
ll n;

pii nxt(pii t){
    return {t.se, (a*t.fi*t.fi + b*t.se*t.se + x*t.fi + y*t.se + z)%MOD};
}

int main()
{
    fin>>t0>>t1>>a>>b>>x>>y>>z>>MOD>>n;

    pii start={t0%MOD, t1%MOD};

    pii A=nxt(start);
    pii B=nxt(nxt(start));
    while (A!=B){
        A=nxt(A);
        B=nxt(nxt(B));
    }

    int lend=0;
    A=start;
    while (A!=B){
        A=nxt(A);
        B=nxt(B);
        lend++;
    }

    int lenc=1;
    pii art=A;
    B=nxt(A);
    while (A!=B){
        B=nxt(B);
        lenc++;
    }

    if (n<lend){
        A=start;
        while (n--)
            A=nxt(A);
        
        fout<<A.fi;
    }
    else{
        n-=lend;
        n%=lenc;

        A=art;
        while (n--)
            A=nxt(A);
        fout<<A.fi;
    }


    return 0;
}