XOR Clique
这个题其实题意很简单,你可以找一下规律,其实这种题目你可以将1到30之间的数值给输出出来,找一下规律,这个题就是将2的j次方和2的j+1次方中数目最多的个数给输出出来。有个技巧就是将每个区间内的数字数目都存到a[j]中去,最后比较找最大值就好了
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stdlib.h>
#include <cstring>
#include <cmath>
using namespace std;
const int maxn = 34;
int a[31];
int main(){
int t,n,x,maxx;
while(scanf("%d",&t)){
while(t--){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&x);
maxx=-1;
for(int j=0;;j++){
if(x>=pow(2,j)&&x<pow(2,j+1)){
//cout<<j<<" ";
//cout<<endl;
a[j]++;
//cout<<a[j]<<" ";
maxx=max(a[j],maxx);
break;
}
}
}
printf("%d\n",maxx);
}
}
return 0;
}