之後N行,每行一個整數yi,即集合Y中的第i個元素,且1<=yi<=1,000,000,000.
5 7 1 2 4 7 8Sample Output
2
AC代碼:
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n;
long long x;
long long a[55];
int b[31],c[31],d[31]={0};
scanf("%d %lld",&n,&x);
for(int i=0;i<31;i++)
{
b[i]=((x&(1<<i))==0?0:1); //求二進制的各位數
}
for(int i=0;i<n;i++)
{
scanf("%lld",&a[i]);
int flag=1;
for(int j=0;j<31;j++)
{
c[j]=((a[i]&(1<<j))==0?0:1);
if(b[j]==0&&c[j]==1) //x的二進制某位爲0,其他的數這位爲1的捨去
{
flag=0;
break;
}
}
if(flag==1)
{
for(int i=0;i<31;i++)
d[i]+=c[i];
}
}
int ans=50;
for(int i=0;i<31;i++)
{
if(b[i]!=0) //d[i]!=0怎麼不對? 18分/20分。。
ans=min(d[i],ans);
}
printf("%d\n",ans);
return 0;
}