xor是满足交换律的,展开后发现只要能快速求出 [1mod1....1modn],....,[nmod1...nmodn]的矩阵的xor就行了....然后找个规律
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int XOR[1100000];
int main()
{
int ans=0,n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int p;
scanf("%d",&p);
ans^=p;
}
for(int i=1;i<=n-1;i++)
{
XOR[i]=XOR[i-1]^i;
int len=i+1;
int res=n%(len*2);
if(res>=len)
{
ans^=XOR[i];
res-=len;
}
ans^=XOR[res];
}
printf("%d\n",ans);
return 0;
}