通过计算可知,因为每一个数字都需要与所有的数字进行按位与然后再按位或,所以时间复杂度在n2以上,这就导致模拟做法一定会超时,所以我们来寻找数学规律 ;

观察到,因为按位与是保留两个数字二进制都为1 , 所以一个数字和另外一个数字的按位与其实是他们共同拥有的1,但是由于开始的按位与它自己,所以我们能够知道在进行按位或之后它一定是它自己,所以算法简化为所有的数字按位异或,这也就是算法实现的这一点。

#include <bits/stdc++.h>
#define int long long
using namespace std;
#define endl '\n'
void work() 
{
    int n; cin >> n ; 
    int x = 0 ; 
    for(int i = 1 ; i <= n ; i++)
    {
        int y ; cin >> y ; 
        x ^= y ;
    }
    cout << x << endl ; 
}
signed main() 
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t = 1;
    cin >> t; 
    while (t--) 
    {
        work();
    }
    return 0;
}