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 ", k); else printf("-1 "); } }