天天看点

HDU 5344 MZL's xor

Problem Description

Ai+

Aj)(

1≤i,j≤n)

The xor of an array B is defined as 

B1 xor 

B2...xor 

Bn

Input

Multiple test cases, the first line contains an integer T(no more than 20), indicating the number of cases.

Each test case contains four integers:

n,

m,

z,

l

A1=0,

Ai=(Ai−1∗m+z) 

mod 

l

1≤m,z,l≤5∗105,

n=5∗105

Output

For every test.print the answer.

Sample Input

2

3 5 5 7

6 8 8 9

Sample Output

14

16

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=500005;
typedef long long ll;
ll a[maxn],T,n,m,z,mod,ans,sum;

int main()
{
    scanf("%lld",&T);
    while (T--)
    {
        scanf("%lld%lld%lld%lld",&n,&m,&z,&mod);
        ans=a[1]=0;
        for (int i=2;i<=n;i++)
        {
            a[i]=(a[i-1]*m+z)%mod;
            ans=ans^(a[i]+a[i]);
        }
        printf("%d\n",ans);
    }
    return 0;
}