@[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