Pagini recente » Cod sursa (job #97104) | Cod sursa (job #1579678) | Cod sursa (job #140019) | Cod sursa (job #713620) | Cod sursa (job #2697178)
#include <bits/stdc++.h>
using namespace std;
ifstream r("rsir.in");
ofstream w("rsir.out");
int main()
{
long long t1, t2, a, b, x, y, z, mod, n;
long long f1, s1, cur1, f2, s2, cur2;
r>>t1>>t2>>a>>b>>x>>y>>z>>mod>>n;
f1=t1;
s1=t2;
cur1=a*f1*f1%mod+b*s1*s1%mod+x*f1%mod+y*s1%mod+z%mod;
while(cur1>=mod)
{
cur1-=mod;
}
f2=s1;
s2=cur1;
cur2=a*f2*f2%mod+b*s2*s2%mod+x*f2%mod+y*s2%mod+z%mod;
while(cur2>=mod)
{
cur2-=mod;
}
while(cur2!=cur1 || s2!=s1)
{
f1=s1;
s1=cur1;
cur1=a*f1*f1%mod+b*s1*s1%mod+x*f1%mod+y*s1%mod+z%mod;
while(cur1>=mod)
{
cur1-=mod;
}
f2=cur2;
s2=a*s2*s2%mod+b*cur2*cur2%mod+x*s2%mod+y*cur2%mod+z%mod;
while(s2>=mod)
{
s2-=mod;
}
cur2=a*f2*f2%mod+b*s2*s2%mod+x*f2%mod+y*s2%mod+z%mod;
while(cur2>=mod)
{
cur2-=mod;
}
}
long long cnt=s1, ans=cur1, dim=1;
f1=s1;
s1=cur1;
cur1=a*f1*f1%mod+b*s1*s1%mod+x*f1%mod+y*s1%mod+z%mod;
while(cur1>=mod)
{
cur1-=mod;
}
while(cnt!=s1 || ans!=cur1)
{
f1=s1;
s1=cur1;
cur1=a*f1*f1%mod+b*s1*s1%mod+x*f1%mod+y*s1%mod+z%mod;
while(cur1>=mod)
{
cur1-=mod;
}
dim++;
}
n%=dim;
f1=cnt;
s1=ans;
cur1=a*f1*f1%mod+b*s1*s1%mod+x*f1%mod+y*s1%mod+z%mod;
while(cur1>=mod)
{
cur1-=mod;
}
for(int i=1; i<n; i++)
{
f1=s1;
s1=cur1;
cur1=a*f1*f1%mod+b*s1*s1%mod+x*f1%mod+y*s1%mod+z%mod;
while(cur1>=mod)
{
cur1-=mod;
}
}
w<<s1;
return 0;
}