Pagini recente » Cod sursa (job #2215203) | Cod sursa (job #1716300) | Cod sursa (job #2494314) | Cod sursa (job #1674705) | Cod sursa (job #2767079)
#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 vect[100005]= {0};
int modul(int val)
{
while(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 lungimeciclu=0;
urmatortestoasa(testoasa, ajuttestoasa);
while(iepure!=testoasa)
{
++lungimeciclu;
urmatortestoasa(testoasa, ajuttestoasa);
}
int inceputciclu=0;
testoasa=t1;
ajuttestoasa=t0;
iepure=t1;
ajutiepure=t0;
for(int i=1; i<=lungimeciclu; ++i)
urmatortestoasa(iepure, ajutiepure);
testoasa=t1;
ajuttestoasa=t0;
for(int i=1; i<=n; ++i)
{
vect[i]=testoasa;
if(i>lungimeciclu)
{
if(vect[i]==vect[i-lungimeciclu-1] )
{
inceputciclu=i-lungimeciclu-1;
break;
}
}
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;
while(x>lungimeciclu+1)
x-=lungimeciclu+1;
int loc=x;
testoasa=t1;
ajuttestoasa=t0;
for(int i=1; i<=inceputciclu; ++i)
urmatortestoasa(testoasa, ajuttestoasa);
for(int i=2; i<=loc; ++i)
{
urmatortestoasa(testoasa, ajuttestoasa);
}
g<<testoasa;
}
return 0;
}