0&1
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define ll long long #define ull unsigned long long using namespace std; ll dp[66][66][105]; void dis(int a[], int n){ printf("总数为%d个\n",n); for(int i = 0; i < n; i++) cout<<a[i]<<", "; cout<<endl<<"------------------"<<endl; } const int mx = 0; int main(){ int T,n,mod; scanf("%d",&T); //T = 10; for(int ca = 1; ca <= T; ca++){ scanf("%d%d",&n,&mod); memset(dp,0,sizeof(dp)); if(n%2||n== 0||mod==0){ printf("Case %d: %lld\n",ca,0); continue; } /* if(k== 0){ printf("Case %d: %lld\n",0); continue; }*/ dp[1][1][1%mod] = 1; for(int i = 2; i <=n; i++){ for(int j = 0; j <= i; j++){ for(int k = 0; k < mod; k++){ if(i >0&&j>0) dp[i][j][(k*2+1)%mod] += dp[i-1][j-1][k]; //加1的 if(i >0) dp[i][j][(k*2)%mod] += dp[i-1][j][k]; } } } // cout<<dp[2][1][0]<<endl; // ll ans = 0; printf("Case %d: %lld\n",ca,dp[n][n/2][0]); //cout<<dp[n][n/2][0]<<endl; } return 0; }