Pagini recente » Cod sursa (job #2654900) | Cod sursa (job #2162657) | Cod sursa (job #619555) | Cod sursa (job #92183) | Cod sursa (job #355902)
Cod sursa(job #355902)
#include<cstdio>
#define MMAX 7000
#define ll long long
using namespace std;
int A[MMAX],B[MMAX],t0,t1,a,b,x,y,z,m;
ll n;
inline void next(int &t0, int &t1)
{
int t2=A[t0]+B[t1]+z;
while(t2>=m)
t2-=m;
t0=t1; t1=t2;
}
int main()
{
int i,T0,T1;
freopen("rsir.in","r",stdin);
freopen("rsir.out","w",stdout);
scanf("%d%d%d%d%d%d%d%d%lld",&t0,&t1,&a,&b,&x,&y,&z,&m,&n);
for(i=0;i<m;++i)
{
A[i]=((ll)a*i*i+x*i)%m;
B[i]=((ll)b*i*i+y*i)%m;
}
t0%=m; t1%=m; z%=m;
for(i=0;i<n && i<m*m;++i)
next(t0,t1);
if(i==n)
{
printf("%d\n",t0);
return 0;
}
n-=i;
T0=t0; T1=t1; i=0;
do
{
next(T0,T1);
++i;
} while(T0!=t0 || T1!=t1);
n%=i;
while(n--)
next(t0,t1);
printf("%d\n",t0);
return 0;
}