提交时间:2024-10-04 13:12:41

运行 ID: 33068

#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) % MOD; } inline int mmul(int x, int y) { return 1ll * x * y % MOD; } int main() { cin >> 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 <= n; i++) f[0][i] = 1; // for (int i = 1; i <= n + m; i++) // for (int j = 1; j <= n; j++) // cout << i << ' ' << j << ' ' << C[i][j] << endl; for (int i = 1; i <= m; i++) for (int j = 1; j <= n; j++) f[i][j] = C[i + j - 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(f[m - j][n], C[j - 1][i - 1]), f[j][n - i]), f[i][n - i + 1]), sq[j])); // cout << mmul(mmul(mmul(mmul(f[m - 1][n], C[0][0]), f[n - 1][1]), f[1][n - 1 + 1]), 4ll * 1 * 1 % MOD) << endl; // cout << f[m - 1][n] << ' ' << C[0][0] << ' ' << f[1][n - 1] << ' ' << f[1][n - 1 + 1] << ' ' << 4 << endl; // cout << f[1][3] << endl; // cout << C[3][2] << endl; cout << ans << endl; return 0; }