Cod sursa(job #1389469)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 16 martie 2015 11:58:41
Problema Rsir Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;
ifstream f("rsir.in");
ofstream g("rsir.out");
long long T0,T1,a,b,x,y,z,M,N;
int Matrix[7005][7005];
void Solve()
{
    T0%=M;
    T1%=M;
    a%=M;
    b%=M;
    x%=M;
    y%=M;
    z%=M;
    long long poz=1,period;
    Matrix[T0][T1]=1;
    int aux=T1;
    T1=T0*T0*a+T1*T1*b+x*T0+y*T1+z;
    T1%=M;
    T0=aux;
    while(Matrix[T0][T1]==0)
    {
        Matrix[T0][T1]=++poz;
        if(poz==N)
        {
            g<<T1<<"\n";
            return;
        }

        int aux=T1;
        T1=T0*T0*a+T1*T1*b+x*T0+y*T1+z;
        T1%=M;
        T0=aux;
    }
    ++poz;
    int diff=poz-Matrix[T0][T1];
    N=N-poz+1;
    N%=diff;
    for(int i=2;i<=N;i++)
    {
        int aux=T1;
        T1=T0*T0*a+T1*T1*b+x*T0+y*T1+z;
        T1%=M;
        T0=aux;
    }
    g<<T1<<"\n";
}
int main()
{
    f>>T0>>T1>>a>>b>>x>>y>>z>>M>>N;
    Solve();
    return 0;
}