Problem Description
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)( 1i,jn)
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=(Ai1m+z)  mod  l
1m,z,l5105, n=5105
 

Output
For every test.print the answer.
 

Sample Input
2 3 5 5 7 6 8 8 9
 

Sample Output
14 16
 


这个题嘛~数据量不小 AC率不低 说明不难 然而不会 冥思苦想的结果是相加的时候有n*n个等式 需要做异或操作 手动模拟下发现运算量太大 可是你再列举时发现了A[i]+A[j]需要算一遍 A[j]+A[i]需要再算一遍 为什么没意识到 他俩异或德0呢???这样的话我们就不用求和啦 只是逐个计算A[1]~A[n]即可 记得乘以2!代码短到接受不了 6666

#include <iostream>
#include<cstdio>
using namespace std;
long long n,m,z,l,k,a,t;
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld%lld%lld",&n,&m,&z,&l);
        k=0,a=0;
        for(int i=1;i<n;i++)
        {
            k=(k*m+z)%l;
            a^=(2*k);
        }
        printf("%lld\n",a);
    }
    return 0;
}