
解题思路如下

#include<stdio.h>
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,k;
scanf("%d %d",&n,&k);
int a[10010];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int maxlen=0;
for(int bit=0;bit<=30;bit++){
int left=0,zero=0,current=0,count=0;
for(int right=0;right<n;right++){
if(a[right]&(1<<bit)){
count++;
}else{
zero++;
}
while(zero>k){
if(a[left]&(1<<bit)){
count--;
}else{
zero--;
}
left++;
}
if(count>0 && right-left+1>current){
current=right-left+1;
}
}
if(current>maxlen){
maxlen=current;
}
}
printf("%d\n",maxlen);
}
}