考え方
modの逆数(modの逆数 - 競プロはじめました)さえわかれば,普通のDP.回答例
dはゴールまでの距離.nxt(次の位置) = move(今いる位置,出目)
dp[i回目に][位置jにいる] 確率.
N, M, K = map(int, input().split()) mod = 998244353 invM = pow(M, mod - 2, mod) d = [N - i for i in range(N + 1)] def move(pos, val): if val <= d[pos]: return pos + val return N - (val - d[pos]) dp = [[0] * (N + 1) for _ in range(K + 1)] dp[0][0] = 1 for i in range(K): for pos in range(N): for val in range(1, M + 1): nxt = move(pos, val) dp[i + 1][nxt] += dp[i][pos] * invM dp[i + 1][nxt] %= mod ans = 0 for i in range(K + 1): ans += dp[i][N] ans %= mod print(ans)