当i和j不一样。。就会有ai+aj 和aj+ai这样两对。答案就是0
所以最后有效的xor操作 只有 (ai+ai)和aj+aj
所以最后有效的xor操作 只有 (ai+ai)和aj+aj
注意乘法溢出
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <set>
#include <vector>
using namespace std;
__int64 f[100000*5+5];
int main()
{
__int64 t;
scanf("%I64d",&t);
while(t--)
{
__int64 n,a,b,c,d,i,j;
scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&d);
f[1]=0;
for (i=2;i<=a;i++)
{
f[i]=(f[i-1]*b+c)%d;
}
__int64 sum=0;
for (i=1;i<=a;i++)
{
sum=sum^(f[i] );
}
printf("%I64d\n",2*sum);
}
return 0;
}