解析:i!=j时(a[i]+a[j])^(a[j]+a[i]) = 0.因此只需统计2*a[i]即可。
[code]:
#include<cstdio>
using namespace std;
typedef long long LL;
LL n,m,z,l;
int main(){
int i,j,cas;
LL value,ans;
scanf("%d",&cas);
while(cas--){
scanf("%I64d%I64d%I64d%I64d",&n,&m,&z,&l);
value = ans = 0;
for(i = 2;i <= n;i++){
value = (value*m+z)%l;
ans ^= 2*value;
}
printf("%I64d\n",ans);
}
return 0;
}