MORE XOR

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
#include<bits/stdc++.h>
using namespace std; const int maxn=1e5+10; int a[maxn]; int sum[4][maxn]; int main() { ios::sync_with_stdio(false); cin.tie(0); int t; cin>>t; while(t--) { int n; cin>>n; memset(sum,0,sizeof(sum)); for(int i=1; i<=n; i++) cin>>a[i]; for(int i=1;i<=n;i++) { sum[0][i]=sum[0][i-1]; sum[1][i]=sum[1][i-1]; sum[2][i]=sum[2][i-1]; sum[3][i]=sum[3][i-1]; if(i%4==0) sum[0][i]^=a[i]; else if(i%4==1) sum[1][i]^=a[i]; else if(i%4==2) sum[2][i]^=a[i]; else if(i%4==3) sum[3][i]^=a[i]; } int q; cin>>q; while(q--) { int l,r; cin>>l>>r; int len=(r-l+1)%4; int ans=0; if(len==1) { int yu=l; ans=sum[yu%4][r]^sum[yu%4][l-1]; } else if(len==2) { int yu=l; ans=sum[yu%4][r]^sum[yu%4][l-1]^sum[(yu+1)%4][r]^sum[(yu+1)%4][l-1]; } else if(len==3) { int yu=l; ans=sum[(yu+1)%4][r]^sum[(yu+1)%4][l-1]; } cout<<ans<<"\n"; } } }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄