可以发现当 i != j 时,(Ai + Aj)会与(Aj + Ai) 抵消,于是把所有的Ai * 2给xor起来就好了。
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,m,z,l;
scanf("%d%d%d%d",&n,&m,&z,&l);
ll x = 0,sum = 0;
for(int i = 2; i <= n; i++){
x = (x*m+z) % l;
sum ^= (2*x);
}
printf("%lld\n",sum);
}
return 0;
}