Cod sursa(job #1560919)

Utilizator redcrocodileIlies Andreea redcrocodile Data 3 ianuarie 2016 14:54:14
Problema Rsir Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;
ifstream f("rsir.in");
ofstream g("rsir.out");
int a,b,x,y,z,m,poz;
long long i,n;
int ct0[7001],ct1[7001];
typedef pair<int,int> pere;
pere t,p,q;
void pleaca(pere &i)
{
  int j=i.second;
  i.second=(ct0[i.first]+ct1[i.second])%m;
  i.first=j;
}
int main()
{
    f>>t.first>>t.second>>a>>b>>x>>y>>z>>m>>n;
    a%=m; b%=m; x%=m; y%=m; z%=m;
    t.first%=m;
    t.second%=m;
    for (i=0;i<m;i++)
      {
          ct0[i]=(a*i*i+x*i+z)%m;
          ct1[i]=(b*i*i+y*i)%m;
      }
     if (n==1)
     {g<<t.second; return 0;}
     else if (n==0) {g<<t.first; return 0;}
    p=q=t; poz=1;
    pleaca(p);
    pleaca(q);
    pleaca(q);
    while(p!=q)
    {
    if (poz==n) {g<<p.first; return 0;} //coada
    poz++;
    pleaca(p);
    pleaca(q);
    pleaca(q);
    }
    n%=poz; //ciclu
    for(i=1;i<=n;i++)
      pleaca(p);
    g<<p.first;
    return 0;
}