Pagini recente » Cod sursa (job #1074778) | Cod sursa (job #2678332) | Cod sursa (job #2605419) | Cod sursa (job #498668) | Cod sursa (job #2137735)
#include <cstdio>
#include <algorithm>
using namespace std;
int val1[7010],val2[7010],mod;
int urm(pair<int,int> v)
{
int val=val1[v.first]+val2[v.second];
if(val>=mod) val-=mod;
return val;
}
int main()
{
freopen("rsir.in","r",stdin);
freopen("rsir.out","w",stdout);
int t0,t1,a,b,x,y,z;
long long n;
scanf("%d%d%d%d%d%d%d%d%lld",&t0,&t1,&a,&b,&x,&y,&z,&mod,&n);
t0%=mod;
t1%=mod;
if(n==0) {printf("%d",t0);return 0;}
if(n==1) {printf("%d",t1);return 0;}
for(int i=0;i<mod;i++)
{
val1[i]=(1LL*a*i*i+x*i+z)%mod;
val2[i]=(1LL*b*i*i+y*i)%mod;
}
pair<int,int> p0,p1;
int poz=1;
p0={t0,t1};
p1=p0;
p0={t1,urm(p0)};
p1={t1,urm(p1)};
p1={p1.second,urm(p1)};
while(p0!=p1)
{
if(n==poz)
{
printf("%d",p0.first);
return 0;
}
poz++;
p0={p0.second,urm(p0)};
p1={p1.second,urm(p1)};
p1={p1.second,urm(p1)};
}
n%=poz;
for(int i=1;i<=n;i++) p0={p0.second,urm(p0)};
printf("%d",p0.first);
return 0;
}