MZL loves xor very much.Now he gets an array A.The length of A is n.He wants to know the xor of all (Ai+Aj)(1≤i,j≤n) The xor of an array B is defined as B1 xor B2...xor Bn
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
For every test.print the answer.
1 #include<cstdio>
2 #include<cstring>
3 using namespace std;
4 int main()
5 {
6 long long t,n,m,z,l,a,sum;
7 scanf("%I64d",&t);
8 while (t--)
9 {
10 scanf("%I64d%I64d%I64d%I64d",&n,&m,&z,&l);
11 a=sum=0;
12 n-=1;
13 while (n--)
14 {
15 a=(m*a+z)%l;
16 sum^=a*2;
17 }
18 printf("%I64d\n",sum);
19 }
20 }