#include <bits/stdc++.h>
using namespace std ;
typedef long long ll;
const int N = 3e5+10;
ll a[N];
void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
ll ans = 0;
for(int i=1;i<=n;i++)
{
ans^=a[i];
}
cout<<ans<<'\n';
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
不难发现,每次a[i]都会与a[i]自己本身进行一次&运算,所以最终 | 的结果一定是包含a[i]的,又发现,a[i]本身与其他数进行&运算最后的结果,含1的位数一定是a[i]的子集,所以最后与其他所有数的&结果一定等于a[i]本身,所以最终只需要所有数异或一遍就是答案,时间复杂度O(n)

京公网安备 11010502036488号