【CF-1362】B. Johnny and His Hobbies

B. Johnny and His Hobbies

题意

给出n个数字,让找出最小的正整数k,使得这n个数字异或k之后,还是这n个数字。

思路

n以及n个数字都不大,直接暴力枚举k为1~1024。

代码

#include<bits/stdc++.h>
#define pb push_back
using namespace std;
const int N=1024+10;
const int mod=50331653;
const int inf=0x3f3f3f3f;
typedef unsigned long long ull;
typedef long long ll;

int arr[N],rec[N][N];
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        for(int i=1; i<=n; ++i)
        {
            scanf("%d",&arr[i]);
            for(int j=1; j<1024; ++j)
                rec[j][i]=arr[i]^j;
        }
        sort(arr+1,arr+1+n);
        int ans=-1;
        for(int i=1; i<1024; ++i)
        {
            sort(rec[i]+1,rec[i]+1+n);
            int flag=1;
            for(int j=1;j<=n;j++)
            {
                if(rec[i][j]!=arr[j])
                {
                    flag=0;
                    break;
                }
            }
            if(flag)
            {
                ans=i;
                break;
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}
/*
*/
posted @ 2020-06-08 18:05  Valk3  阅读(139)  评论(0编辑  收藏  举报