Cod sursa(job #1679153)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 7 aprilie 2016 18:35:07
Problema Rsir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
# include <fstream>
using namespace std;
ifstream fin("rsir.in");
ofstream fout("rsir.out");
struct inter {
    int f;
    int s;
};
inter a1,v1,v2;
int n,a,b,x,y,z,m,MOD,e1,e2,c,i,l;
inter next (inter a1){
    int aux=a1.f;
    a1.f=a*a1.s*a1.s;
    a1.f%=MOD;
    a1.f+=b*aux*aux;
    a1.f%=MOD;
    a1.f+=x*a1.s;
    a1.f%=MOD;
    a1.f+=y*aux;
    a1.f%=MOD;
    a1.f+=z;
    a1.f%=MOD;
    a1.s=aux;
    return a1;
}
int main () {
    fin>>e1>>e2>>a>>b>>x>>y>>z>>m>>n;
    v1.f=e2;
    v1.s=e1;
    v2.f=e2;
    v2.s=e1;
    MOD=m;
    do{
        v1=next(v1);
        v2=next(next(v2));
    }
    while(v1.f!=v2.f&&v1.s!=v2.s);
    v2=v1;
    do{
        v2=next(v2);
        c++;
    }
    while(v1.f!=v2.f&&v1.s!=v2.s);
    v1.f=e2;
    v1.s=e1;
    v2=v1;
    for(i=2;i<=c+1;i++){
        v1=next(v1);
    }
    while(v1.f!=v2.f&&v1.s!=v2.s){
        v2=next(v2);
        v1=next(v1);
        l++;
    }
    l++;
    c++;
    v1.f=e2;
    v1.s=e1;
    if(l>=n){
        for(i=1;i<=n;i++)
            v1=next(v1);
        fout<<v1.s<<"\n";
    }
    else{
        n-=l;
        n%=c;
        for(i=1;i<=n+l;i++){
            v1=next(v1);
        }
        fout<<v1.s<<"\n";
    }
    return 0;
}