#include<cstdio> #define maxn 1000001 using namespace std; typedef long long D; D mod,A[maxn+1],B[maxn+1]; D mul(D a,D b){return (a*=b)>=mod?a%mod:a;} int main(){ D a,q,k,l,m,c,b,last,Xor=0; scanf("%lld%lld%lld%lld%lld%lld%lld%lld",&a,&mod,&q,&k,&last,&l,&m,&c); A[0]=1; for(D i=1;i<=maxn;i++)A[i]=mul(A[i-1],a); B[0]=1; for(D i=1;i<=maxn;i++)B[i]=mul(B[i-1],A[maxn]); for(D i=1;i<=q;i++){ b=(m*last+c)%l; Xor^=mul(A[b%maxn],B[b/maxn]); if(i%k==0)printf("%lld\n",Xor); last=b; } return 0; } |
Double click to view unformatted code.