#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[41];
ll dp[3][(1<<20)+100];
int main()
{
int t,kase=1;scanf("%d",&t);
while(t--){
memset(dp,0,sizeof(dp));
int n,m;scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
dp[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=(1<<20);j++)
dp[i%2][j]=dp[(i-1)%2][j]+dp[(i-1)%2][j^a[i]];
// printf("%lld\n",dp[n%2][1<<20]);
ll sum=0;
for(int i=m;i<=(1<<20);i++) { sum+=dp[n%2][i]; if(dp[n%2][i]!=0); }
// printf("%lld\n",dp[n%2][1<<20]);
// for(int i=m+1;i<=30;i++) { printf("%lld ",sum); }
printf("Case #%d: %lld\n",kase++, sum);
}
return 0;
}
DP hduHDU 5119
最新推荐文章于 2019-04-12 09:19:37 发布