Cod sursa(job #1275180)

Utilizator george_stelianChichirim George george_stelian Data 24 noiembrie 2014 20:44:49
Problema Rsir Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int a,b,x,y,z,mod;

pair<int,int> nextelement(pair<int,int> p)
{
    int t=p.first,t1=p.second;
    return make_pair(t1,(a*t*t+b*t1*t1+x*t+y*t1+z)%mod);
}

int main()
{
    freopen("rsir.in", "r", stdin);
    freopen("rsir.out", "w", stdout);
    int t0,t1,nr1=0,nr2=0;
    long long n;
    scanf("%d%d%d%d%d%d%d%d%lld",&t0,&t1,&a,&b,&x,&y,&z,&mod,&n);
    t0%=mod;t1%=mod;
    pair<int,int> p=make_pair(t0,t1),p1=make_pair(t0,t1);
    do
    {
        nr1++;
        p=nextelement(p);
        p1=nextelement(nextelement(p1));
    }while(p!=p1);
    do
    {
        nr2++;
        p=nextelement(p);
    }while(p!=p1);
    if(n<=nr1)
    {
        p=make_pair(t0,t1);
        for(int i=2;i<=n;i++) p=nextelement(p);
    }
    else
    {
        n-=nr1;
        n%=nr2;
        if(!n) n+=nr2;
        for(int i=2;i<=n;i++) p=nextelement(p);
    }
    printf("%d",p.second);
    return 0;
}