#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
LL dp[60][60][120];
int main(){
int T,t = 1;
int n,mod;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&mod);
printf("Case %d: ",t++);
if( n & 1 || mod == 0){
printf("0\n");
continue;
}
memset(dp,0,sizeof(dp));
dp[0][1][1 % mod]=1;
for( LL i = 0; i <= n/2; i++){
for( LL j = 0; j <= n/2; j++){
for(LL k = 0; k < mod; k++){
dp[i + 1][j][(k * 2) % mod] += dp[i][j][k];
dp[i][j + 1][(k * 2 + 1) % mod] += dp[i][j][k];
}
}
}
printf("%lld\n",dp[n/2][n/2][0]);
}
}
uva 12063 含有相同个数0和1 并且是k的倍数 的数的个数 DP
最新推荐文章于 2020-06-22 17:38:03 发布