题意:n个数的两两做和,然后异或
分析:
异或的性质:两个相同的数异或为0,所以Ai+Aj异或Aj+Ai等于0,所以最终结果就是Ai+Ai的异或
代码:
#include<stdio.h>
long long t,n,m,z,l;
long long a[1000005];
int main()
{
scanf("%I64d",&t);
while(t--){
scanf("%I64d%I64d%I64d%I64d",&n,&m,&z,&l);
a[1]=0;
long long ans=0;
long long i;
for(i=2;i<=n;i++){
a[i]=(a[i-1]*m+z)%l;
ans^=(a[i]*2);
}
printf("%I64d\n",ans);
}
}