6 条题解

  • 1
    @ 2026-8-10 9:14:51
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    #define N 500010
    int n;
    int a[N];
    int num[N];
    int fac[35];
    int getnum(int x){
    	int l=1,r=n;
    	int cnt=0;
    	num[0]=0;
    	while(l<=n){
    		while(l<=r&&num[l]+num[r]>=x)r--;
    		cnt+=min(n-l+1,n-r);
    		l++;
    	}
    	return cnt;
    }
    signed main(){
    	fac[0]=1;for(int i=1;i<=31;i++)fac[i]=fac[i-1]*2;
    	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    	cin>>n;
    	for(int i=1;i<=n;i++)cin>>a[i];
    	
    	int ans=0;
    	for(int j=0;j<=30;j++){
    		int cnt=0;
    		for(int i=1;i<=n;i++){
    			num[i]=a[i]%fac[j+1];
    		}
    		sort(num+1,num+n+1);
    		cnt+=getnum(fac[j]);
    		cnt-=getnum(fac[j+1]);
    		cnt+=getnum(fac[j]+fac[j+1]);
    		if(cnt&1)ans+=fac[j];
    	}
    	
    	cout<<ans<<'\n';
    	
    	return 0;
    }
    

    信息

    ID
    12560
    时间
    1000ms
    内存
    512MiB
    难度
    9
    标签
    递交数
    155
    已通过
    14
    上传者