我的第一版代码是这样的:
#include<bits/stdc++.h>
using namespace std;
int n;
long long ans;
long long a[100],b[100];
void work(long long x){
for(long long i=63;i>=0;i--){
if(x>>i){
if(!b[i]){
b[i]=x;
break;
}
else{
x^=b[i];
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
work(a[i]);
}
for(int i=63;i>=0;i--){
ans=max(ans,ans^b[i]);
}
cout<<ans;
}
其中在线性基处理部分出现了 x>>i 的神秘字样,理应是 x>>i&1,但是这份代码通过了此题,是这样写并无错误还是数据过水?