位元運算很強大,a異或b=k,算出k有多少個1就知道有多少位不同,而算的時候野可以利用位元運算去算,總之位元運算很強大!
#include <list>#include <map>#include <set>#include <queue>#include <string>#include <deque>#include <stack>#include <algorithm>#include <iostream>#include <iomanip>#include <cstdio>#include <cmath>#include <cstdlib>#include <limits.h>#include <time.h>#include <string.h>using namespace std;#define LL long long#define PI acos(-1.0)#define MAX INT_MAX#define MIN INT_MIN#define eps 1e-10#define FRE freopen("a.txt","r",stdin)#define N 105int a[N];int n,m;int gaogao(int k){ int i,j; int res=0; while(k){ if((k&1)==1) res++; k>>=1; } return res;}void gao(int b){ int i,j; int minm=MAX; for(i=0;i<n;i++){ int k=(b^a[i]); int tmp=gaogao(k); if(tmp<minm){ minm=tmp; j=i; } } printf("%d\n",a[j]);}int main(){ int t; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); int i,j; for(i=0;i<n;i++)scanf("%d",&a[i]); sort(a,a+n); while(m--){ int b; scanf("%d",&b); gao(b); } } return 0;}