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
简单题,异或运算会互相抵消,所以只剩下ai+ai了
#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;
}










