View Code of Problem 134

#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.


Back to problem 134