Cod sursa(job #1678702)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 7 aprilie 2016 15:03:42
Problema Rsir Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<fstream>
#define f first
#define s second
using namespace std;
int a, b, x, y, z, n, nr, i, nr1, m;
pair<int, int> frst, p, q;
ifstream fin("rsir.in");
ofstream fout("rsir.out");
pair<int, int> next(pair<int, int> p){
    pair<int, int> pnext;
    pnext.f = p.s;
    pnext.s = (a * p.f % m * p.f % m + b * p.s % m * p.s % m + x * p.f % m + y * p.s % m + z) % m;
    return pnext;
}
int main(){
    fin>> frst.f >> frst.s >> a >> b >> x >> y >> z >> m >> n;
    frst.f %= m;
    frst.s %= m;
    a %=m;
    b %= m;
    x %= m;
    y %= m;
    z %= m;
    p = q = frst;
    do{
        p = next(p);
        q = next( next(q) );
    }while(p != q);

    do{
       nr++;
       p = next(p);
    }while(p != q);

    p = q = frst;
    for(i = 1; i <= nr; i++){
        p = next(p);
    }
   while(p != q){
       nr1++;
       p = next(p);
       q = next(q);
   }
   if(n < nr1){
       p = frst;
       for(i = 1; i <= n; i++){
           p = next(p);
       }
       fout<< p.f <<"\n";
   }
   else{
       p = frst;
       for(i = 1; i <= nr1; i++){
           p = next(p);
       }
       n -= nr1;
       for(i = 1; i <= n % nr; i++){
           p = next(p);
       }
       fout<< p.f <<"\n";
   }
   return 0;
}