地址:http://codeforces.com/contest/1362/problem/B
题意:
找出最小k,去^ a[]里的每个值,使得a[]不变(可变顺序)
解析:
异或^:同为0,异为1
数据很小,直接暴力即可
map来判定是否相同,每次^完毕以后,用map记录出现次数判定一遍即可。
#include <cstdio> #include<map> #include<iostream> using namespace std; typedef long long ll; const int maxn=1200; int a[maxn]; int main() { int t; cin>>t; while(t--) { int n; cin>>n; map<int,int>m1; for(int i=1;i<=n;i++) { cin>>a[i]; m1[a[i]]++; }int ok =0; for(int i=1;i<=1024;i++) { map<int,int>m2; for(int j=1;j<=n;j++) { int md=a[j]^i; m2[md]++; } int ok1=0; for(int j=1;j<=n;j++) { if(m1[a[j]]!=m2[a[j]]) { ok1=1;break; } } if(!ok1) { cout<<i<<endl;ok=1;break; } } if(!ok) cout<<"-1"<<endl; } }