結果

問題 No.2932 えっえっ嘘嘘嘘待って待って待って???えマジで?ほんとに?マジでやばすぎなんだけど?えっおっほんとにこんなにDPしちゃっていいんですかい???マジでやばすぎなんだけど???
ユーザー Theta
提出日時 2024-11-20 14:35:06
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 43 ms / 2,000 ms
コード長 932 bytes
コンパイル時間 183 ms
コンパイル使用メモリ 82,368 KB
実行使用メモリ 60,348 KB
最終ジャッジ日時 2024-11-20 14:35:08
合計ジャッジ時間 1,443 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 12
権限があれば一括ダウンロードができます

ソースコード

diff #

def main():
    MOD = 998244353
    H, W, M = map(int, input().split())
    if H + W - 1 > M:
        print(0)
        return
    pattern = pow(M, H*W - (H+W-1), MOD)
    route_comb_up = 1
    for n in range(M-H-W+2, M+1):
        route_comb_up *= n
        route_comb_up %= MOD
    route_comb_down = 1
    for n in range(1, H+W):
        route_comb_down *= n
        route_comb_down %= MOD
    route_comb_down_inv = pow(route_comb_down, MOD-2, MOD)
    pattern *= route_comb_up
    pattern %= MOD
    pattern *= route_comb_down_inv
    pattern %= MOD

    comb_up = 1
    for n in range(W, H+W-1):
        comb_up *= n
        comb_up %= MOD
    comb_down = 1
    for n in range(1, H):
        comb_down *= n
        comb_down %= MOD

    comb_down_inv = pow(comb_down, MOD-2, MOD)
    pattern *= comb_up
    pattern %= MOD
    pattern *= comb_down_inv
    pattern %= MOD
    print(pattern)


if __name__ == "__main__":
    main()
0