您的位置:首页 > 其它

UVa12063 Zeros and Ones

2016-01-08 08:37 337 查看
神坑 1竟然还要取模

在后面填数多好的

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream>

using namespace std;

void setIO(const string& s) {
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
template<typename Q> Q read(Q& x) {
static char c, f;
for(f = 0; c = getchar(), !isdigit(c); ) if(c == '-') f = 1;
for(x = 0; isdigit(c); c = getchar()) x = x * 10 + c - '0';
if(f) x = -x;
return x;
}
template<typename Q> Q read() {
static Q x; return read(x);
}

typedef long long LL;
LL f[65][65][101];

LL dp(int n, int p) {
if(!p || (n & 1)) return 0;
memset(f, 0, sizeof f);
f[1][1][1 % p] = 1;
for(int i = 1; i < n; i++) {
for(int j = 0; j <= i; j++) {
for(int k = 0; k < p; k++) {
f[i + 1][j][(k << 1) % p] += f[i][j][k];
f[i + 1][j + 1][(k << 1 | 1) % p] += f[i][j][k];
}
}
}
return f
[n / 2][0];
}

int main() {
#ifdef DEBUG
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif

int T = read<int>(), n, k;
for(int cas = 1; cas <= T; cas++) {
read(n), read(k);
printf("Case %d: %lld\n", cas, dp(n, k));
}

return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: