http://codeforces.com/contest/1013/problem/B
假设一个 k , 与 x 按位与 得到了k1 ,k1再和x按位与 是不是还是k1 呀
知道这个就可以了
答案只有-1 0 1 2
#include<bits/stdc++.h>
using namespace std;
int a[111111];
int b[111111];
map<int,int>p;
int main()
{
int n;
while(cin>>n)
{
p.clear();
int x;
cin>>x;
int f=1;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(p[a[i]]==0)
{
p[a[i]]=1;
}
else{
f=0;
}
}
if(f==0)
{
cout<<"0"<<endl;
}
else {
for(int i=0;i<n;i++)
{
if(p[a[i]&x]==1&&(a[i]&x)!=a[i])
{
f=0;
break;
}
}
if(f==0)
cout<<"1"<<endl;
else
{
for(int i=0;i<n;i++)
{
b[i]=a[i]&x;
}
sort(b,b+n);
for(int i=1;i<n;i++)
{
if(b[i]==b[i-1])
{
f=0;
break;
}
}
if(!f)
{
cout<<"2"<<endl;
}
else
cout<<"-1"<<endl;
}
}
}
return 0;
}