1. 程式人生 > >HDU 5119 Happy Matt Friends

HDU 5119 Happy Matt Friends

#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;
}