求救求救求救,懒得写标题

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

@[黄仁勋](/space/show?uid=23771) ~~您的头文件让我震惊~~
by skiy_gyx @ 2018-10-23 21:02:46


@[黄仁勋](/space/show?uid=23771) 巧了,我也刚做完 仅供参考 ```cpp #include <bits/stdc++.h> #define newline printf ("\n") #define space printf (" ") #define cinfalse ios::sync_with_stdio(false) #define fread(a) freopen (a".in", "r", stdin), freopen(a".out", "w", stdout) #define rint register int #define For(i, a, b) for (rint i = a; i <= b; i ++) #define Low(i, a, b) for (rint i = a; i >= b; i --) #define FFr(i, a, b, c) for (rint i = a; i <= b; i += c) #define FLw(i, a, b, c) for (rint i = a; i >= b; i -= c) #define min(a, b) (a)>(b)?(b):(a) #define max(a, b) (a)>(b)?(a):(b) #define MAXN 2005 using namespace std; int t, k; int C[MAXN][MAXN], s[MAXN][MAXN]; void preper () { C[1][1] = 1; For (i, 0, MAXN-2) C[i][0] = 1; For (i, 2, MAXN-2) For (j, 1, i) C[i][j] = (C[i-1][j]+C[i-1][j-1]) % k; For (i, 2, MAXN-2) { For (j, 1, i) { s[i][j] = s[i-1][j]+s[i][j-1]-s[i-1][j-1]; if (!C[i][j]) s[i][j] += 1; } s[i][i+1] = s[i][i]; } } int main () { scanf ("%d%d", &t, &k); preper(); while (t--) {rint a, b; scanf ("%d%d", &a, &b), printf ("%d\n", s[a][min(a, b)]);} return 0; } ```
by tocek_shiki @ 2018-10-23 21:06:18


|