题意:问这个数组的所有(Ai+Aj)的异或值, 刚开始没看懂,发现样例的结果是自己的结果的两倍,所以乘2,用long long int就过了
#include <stdio.h>
#define maxn 500010
long long int A[maxn];
int main()
{
int n, m, z, l, t, i;
long long int ans;
scanf("%d", &t);
while(t--)
{
scanf("%d %d %d %d", &n, &m, &z, &l);
A[1] = 0;
ans = A[1];
for(i = 2;i <= n;i++)
{
A[i] = (A[i - 1] * m + z) % l;
ans = ans ^ A[i];
}
printf("%lld\n", ans * 2);
}
}