Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
6557 | 18级尹玉文东 | 2021北京队选拔模拟赛1-B | C++ | 解答错误 | 0 | 62 MS | 27924 KB | 783 | 2021-04-03 15:28:12 |
#include <bits/stdc++.h> #define int long long using namespace std; const int MAXN = 1008; int a[MAXN] = {1, 1, 0, 0}; int n, mod; int f[1008][1008], g[1008][1008]; signed main() { while(cin >> n >> mod) { f[1][0] = 1; for(int i = 1; i < n; i++) { for(int j = 0; j <= i - 1; j++) { g[i + 1][j + 1] += g[i][j]; g[i + 1][j + 1] %= mod; g[i + 1][j] += g[i][j]; g[i + 1][j] %= mod; if(j) f[i + 1][j - 1] += (j - 1) * (g[i][j]); f[i + 1][j - 1] %= mod; f[i + 1][j] += (i - j) * g[i][j]; f[i + 1][j] %= mod; g[i + 1][j + 1] += f[i][j] * 2; g[i + 1][j + 1] %= mod; f[i + 1][j - 1] += j * f[i][j]; f[i + 1][j - 1] %= mod; f[i + 1][j] += (i - j - 1) * f[i][j]; f[i + 1][j] %= mod; } } cout << f[n][0] << endl; } return 0; }