1 条题解

  • 0
    @ 2023-6-21 20:04:07

    C++ :

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    using namespace std;
    typedef long long ll;
    int n;
    ll s,a[100010],p[60];
    inline void insert(ll x) {
        for(int i=59;~i;i--)
    	if((x>>i)&1 && (~s>>i)&1) {
    	    if(!p[i]) {p[i]=x;return;}
    	    x^=p[i];
    	}
        for(int i=59;~i;i--)
    	if((x>>i)&1 && (s>>i)&1) {
    	    if(!p[i]) {p[i]=x;return;}
    	    x^=p[i];
    	}
    }
    inline ll query() {
        ll ret=0;
        for(int i=59;~i;i--)
    	if((~ret>>i)&1 && (~s>>i)&1) ret^=p[i];
        for(int i=59;~i;i--)
        	if((~ret>>i)&1 && (s>>i)&1) ret^=p[i];
        return ret;
    }
    int main() {
        cin>>n;
        for(int i=1;i<=n;i++) scanf("%lld",&a[i]),s^=a[i];
        for(int i=1;i<=n;i++) insert(a[i]);
        cout<<(query()^s);
        return 0;
    }
    
    • 1

    信息

    ID
    1025
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者