提交时间:2024-10-04 13:36:15
运行 ID: 33081
#include <bits/stdc++.h> using namespace std; const int N = 505, M = 1e5 + 5, MOD = 998244353; int n, m, ans; int C[M + N][N], f[M][N], sq[M]; inline int madd(int x, int y) { return x + y - (x + y > MOD ? MOD : 0); } inline int mmul(int x, int y) { return 1ll * x * y % MOD; } int main() { scanf("%d%d", &n, &m); for (int i = 0; i <= m + n; i++) C[i][0] = 1; for (int i = 1; i <= m + n; i++) for (int j = 1; j <= n; j++) C[i][j] = madd(C[i - 1][j], C[i - 1][j - 1]); for (int i = 0; i <= m; i++) sq[i] = 4ll * i * i % MOD; // for (int i = 1; i <= n; i++) // for (int j = i; j <= m; j++) // ans = madd(ans, mmul(mmul(mmul(mmul(C[m - j + n - 1][n - 1], C[j - 1][i - 1]), C[j + n - i - 1][n - i - 1]), C[n][n - i]), sq[j])); for (int j = 1; j <= m; j++) { int tmp = mmul(C[m - j + n - 1][n - 1], sq[j]); for (int i = min(n, j); i >= 1; i--) ans = madd(ans, mmul(mmul(mmul(tmp, C[j - 1][i - 1]), C[j + n - i - 1][n - i - 1]), C[n][n - i])); } printf("%d", ans); return 0; }