B - Johnny and His Hobbies

B - Johnny and His Hobbies

这道题题意:就是给定一个集合,然后找到1个最小的数K,使得集合中的各元素与K异或得到的集合与原集合等价。

题解:这道题暴力就可以了,先异或,在比较。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1050;
int ah[maxn];
int bh[maxn];
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n;
        int flag = 1;
        int k;
        scanf("%d", &n);
        for (int i = 1; i <= n;i++){
            scanf("%d", &ah[i]);
        }
        sort(ah + 1, ah + 1 + n);
        for (int i = 1; i <= 1024;i++){
            flag = 1;
            for (int j = 1; j <= n;j++){
                bh[j] = ah[j] ^ i;
            }
            sort(bh + 1, bh + 1 + n);
            for (int j = 1; j <= n;j++){
                if(bh[j]!=ah[j]){
                    flag = 0;
                    break;
                }
            }
           if(flag){
               k = i;
               break;
           }
               
        }
        if(flag)
            printf("%d\n", k);
        else
            printf("-1\n");
    }
}

 

posted @ 2020-07-03 13:04  kitalekita  阅读(139)  评论(0编辑  收藏  举报