HDU 5119 Happy Matt Friends
阿新 • • 發佈:2019-02-13
#include<cstdio> #include<cstring> #include<cstring> #include<algorithm> using namespace std; int a[50]; int dp[50][2000100]; int cnt=1; int main() { int T,n,m; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(dp,0,sizeof(dp)); dp[0][0]=1;//前i個數組成異或和為j的方法數 int MAX=1<<20; for(int i=1;i<=n;i++) { for(int j=0;j<MAX;j++) { dp[i][j] = dp[(i-1)][j]+dp[(i-1)][j^a[i]]; } } long long ans=0; for(int j=m;j<MAX;j++) { ans+=dp[n][j]; } printf("Case #%d: %lld\n",cnt++,ans); } return 0; }