Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32571 gaochunzhen 【S】T2 C++ 运行超时 35 1000 MS 1468 KB 1881 2024-09-15 12:43:47

Tests(28/30):


#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1009, M = 309, Mod = 998244353; int fpow(int a, int b = Mod - 2) { int res = 1; while (b) { if (b & 1) res = 1ll * res * a % Mod; a = 1ll * a * a % Mod, b >>= 1; } return res; } int n, m, pw[N], ip[N]; int C(int n, int m) { if (n < 0 || m < 0 || n < m) return 0; return 1ll * pw[n] * ip[m] % Mod * ip[n - m] % Mod; } namespace sub1 { int dp[N][M]; void Main() { int ans = 0; for (int i = 1; i <= n; i++) { // zhongshu chuxiancishu int now = 1; for (int j = 1; i * j <= n && j <= m; j++) { // shuliang duoshaogezhongshu now = 1ll * now * C(n - (j - 1) * i, i) % Mod; int T = n - i * j; for (int x = 0; x <= T; x++) { for (int y = 0; y <= m - j; y++) dp[x][y] = !x; } for (int x = 0; x < T; x++) { for (int y = 0; y < m - j; y++) { for (int k = 0; k < i && k <= T - x; k++) { dp[x + k][y + 1] = (dp[x + k][y + 1] + 1ll * dp[x][y] * C(T - x, k)) % Mod; } } } (ans += 1ll * i * now % Mod * C(m, j) % Mod * dp[T][m - j] % Mod) %= Mod; // cout << i << ' ' << j << ' ' << 1ll * i * now % Mod * C(m, j) % Mod * pw[j] % Mod * dp[T][m - j] % Mod << endl; // cout << i << ' ' << j << ' ' << dp[T][m - j] << endl; } } printf("%d\n", ans); } } signed main() { scanf("%d%d", &m, &n); pw[0] = ip[0] = 1; for (int i = 1; i <= 1000; i++) { pw[i] = 1ll * pw[i - 1] * i % Mod; ip[i] = fpow(pw[i]); } sub1::Main(); return 0; }


测评信息: