Pagini recente » Cod sursa (job #2624613) | Borderou de evaluare (job #1900512) | Cod sursa (job #2347416) | Cod sursa (job #1846432) | Cod sursa (job #2766988)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("rsir.in");
ofstream g ("rsir.out");
int t1,t0,a,b,x,y,z,mod,n;
int iepure , ajutiepure , testoasa , ajuttestoasa;
int modul(int val)
{
if(val>mod)
val=val%mod;
return val;
}
void urmatoriepure(int &i, int &j)
{
int aux=i;
i=a*j*j+b*i*i+x*j+y*i+z;
i=modul(i);
j=aux;
aux=i;
i=a*j*j+b*i*i+x*j+y*i+z;
i=modul(i);
j=aux;
}
void urmatortestoasa(int &i, int &j)
{
int aux=i;
i=a*j*j+b*i*i+x*j+y*i+z;
i=modul(i);
j=aux;
}
int main()
{
f>>t0>>t1>>a>>b>>x>>y>>z>>mod>>n;
iepure=t1;
ajutiepure=t0;
urmatoriepure(iepure, ajutiepure);
testoasa=t1;
ajuttestoasa=t0;
urmatortestoasa(testoasa, ajuttestoasa);
while(iepure!=testoasa)
{
urmatoriepure(iepure, ajutiepure);
urmatortestoasa(testoasa, ajuttestoasa);
}
int inceputciclu=0;
testoasa=t1;
ajuttestoasa=t0;
while(iepure!=testoasa)
{
urmatortestoasa(testoasa , ajuttestoasa);
++inceputciclu;
}
int lungimeciclu=0;
urmatortestoasa(testoasa , ajuttestoasa);
while(iepure!=testoasa)
{
++lungimeciclu;
urmatortestoasa(testoasa , ajuttestoasa);
}
if(n<=inceputciclu)
{
testoasa=t1;
ajuttestoasa=t0;
for(int i=2;i<=n;++i)
urmatortestoasa(testoasa , ajuttestoasa);
g<<testoasa;
}
else
{
int x=n-inceputciclu;
int loc=modul(x);
testoasa=t1;
ajuttestoasa=t0;
for(int i=2;i<=inceputciclu;++i)
urmatortestoasa(testoasa , ajuttestoasa);
for(int i=1;i<=loc;++i)
urmatortestoasa(testoasa , ajuttestoasa);
g<<testoasa;
}
return 0;
}