众所周知,29<log2(109)<30,可我只开了 26 就通过了此题。
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,a[N],s[N];
long long ans;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
s[i]=s[i-1]^a[i];
ans+=a[i];
}
for(int j=0;j<27;j++){
int x=0,y=0;
for(int i=0;i<=n;i++){
if(s[i]>>j&1){
if(i)ans+=1ll*(1<<j)*(y-!(s[i-1]>>j&1));
x++;
}
else{
if(i)ans+=1ll*(1<<j)*(x-(s[i-1]>>j&1));
y++;
}
}
}
cout<<ans;
return 0;
}