UVa 12034 - Race(组合+递推)

书上给了公式,照着敲的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <cstdio>
using namespace std;
const int maxn = 1010;
const int mod = 10056;
int c[maxn][maxn];
int f[maxn];
void pre() {
for(int i = 0; i < maxn; ++i) c[i][0] = 1;
for(int i = 1; i < maxn; ++i)
for(int j = 1;j <= i; ++j)
c[i][j] = (c[i-1][j] + c[i-1][j-1]) % mod;
f[0] = 1;
for(int i = 1; i < maxn; ++i)
for(int j = 0; j <= i; ++j)
f[i] += f[i-j] * c[i][j], f[i] %= mod;
}
int main() {
pre();
int t, n, tt=0;scanf("%d",&t);
while(t--){
scanf("%d", &n);
printf("Case %d: %d\n", ++tt, f[n]);
}
return 0;
}

** 本文迁移自我的CSDN博客,格式可能有所偏差。 **