九野的博客,本文转载可以不注明出处 :http://blog.csdn.net/acmmmm/article/details/11692485
按位或运算出后的结果只会增加或不变 不会减少
#include <stdio.h>
#define N 110010
#define ll int
ll a[N];
int main(){
int T,Cas=1;scanf("%d",&T);
int n,m;
ll i,j,ans;
while(T--)
{
scanf("%d %d",&n,&m);
for(i=0;i<n;i++)scanf("%d",&a[i]);
ans=0;
for(i=0;i<n;i++)
{
if(a[i]<m)ans++;
ll yi=a[i];
for(j=i+1;j<n;j++)
{
yi|=a[j];
if(yi<m)ans++;
else break;
}
}
printf("Case #%d: %d\n",Cas++,ans);
}
return 0;
}