Cod sursa(job #2766988)

Utilizator marcumihaiMarcu Mihai marcumihai Data 4 august 2021 13:21:28
Problema Rsir Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("rsir.in");
ofstream g ("rsir.out");




int t1,t0,a,b,x,y,z,mod,n;
int iepure , ajutiepure , testoasa , ajuttestoasa;
int modul(int val)
{
    if(val>mod)
        val=val%mod;
    return val;
}

void urmatoriepure(int &i, int &j)
{
    int aux=i;
    i=a*j*j+b*i*i+x*j+y*i+z;
    i=modul(i);
    j=aux;


    aux=i;
    i=a*j*j+b*i*i+x*j+y*i+z;
    i=modul(i);
    j=aux;


}


void urmatortestoasa(int &i, int &j)
{
    int aux=i;
    i=a*j*j+b*i*i+x*j+y*i+z;
    i=modul(i);
    j=aux;
}

int main()
{
    f>>t0>>t1>>a>>b>>x>>y>>z>>mod>>n;

     iepure=t1;
     ajutiepure=t0;
    urmatoriepure(iepure, ajutiepure);

     testoasa=t1;
     ajuttestoasa=t0;
    urmatortestoasa(testoasa, ajuttestoasa);

    while(iepure!=testoasa)
    {
        urmatoriepure(iepure, ajutiepure);
        urmatortestoasa(testoasa, ajuttestoasa);

    }
    int inceputciclu=0;
    testoasa=t1;
    ajuttestoasa=t0;
    while(iepure!=testoasa)
    {
        urmatortestoasa(testoasa , ajuttestoasa);
        ++inceputciclu;

    }
    int lungimeciclu=0;
    urmatortestoasa(testoasa , ajuttestoasa);

    while(iepure!=testoasa)
    {
        ++lungimeciclu;
        urmatortestoasa(testoasa , ajuttestoasa);
    }


    if(n<=inceputciclu)
    {
        testoasa=t1;
        ajuttestoasa=t0;
        for(int i=2;i<=n;++i)
            urmatortestoasa(testoasa , ajuttestoasa);

        g<<testoasa;
    }
    else
    {
        int x=n-inceputciclu;
        int loc=modul(x);

        testoasa=t1;
        ajuttestoasa=t0;

        for(int i=2;i<=inceputciclu;++i)
            urmatortestoasa(testoasa , ajuttestoasa);

        for(int i=1;i<=loc;++i)
            urmatortestoasa(testoasa , ajuttestoasa);

        g<<testoasa;
    }
    return 0;
}