实在是没想通一点

P2822 [NOIP2016 提高组] 组合数问题

@[Setsugesuka](/space/show?uid=102473)
by ctq1999 @ 2019-10-23 18:32:38


源码 ``` #include <bits/stdc++.h> #define MAXN 2500 using namespace std; int t, k, n, m; int f[MAXN][MAXN], c[MAXN][MAXN]; void init() { c[0][0] = c[1][0] = c[1][1] = 1;//... for (int i = 2; i <= 2010; i++) { c[i][0] = 1; for (int j = 1; j <= i; j++) { c[i][j] = c[i - 1][j - 1] + c[i - 1][j]; c[i][j] %= k; f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1]; if (!c[i][j]) f[i][j]++; } f[i][i + 1] = f[i][i];//为什么 } return; } int main() { scanf("%d%d", &t, &k); init(); while (t--) { scanf("%d%d", &n, &m); if (m > n) m = n; printf("%d\n", f[n][m]); } return 0; } ```
by ctq1999 @ 2019-10-23 20:08:55


@[ctq1999](/space/show?uid=18673) 你下一行算到最后一个时会用到,所以为了懒得判断,所以加这句话
by wubaiting2020 @ 2019-10-23 20:18:11


@[wubaiting2020](/space/show?uid=42019) 谢谢啦!
by ctq1999 @ 2019-10-23 20:26:00


|