提交时间:2021-04-03 15:28:30

运行 ID: 6558

#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] % mod<< endl; } return 0; }