結果

問題 No.3394 Big Binom
コンテスト
ユーザー 👑 ArcAki
提出日時 2025-12-01 20:32:22
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 163 ms / 2,000 ms
コード長 2,713 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 235 ms
コンパイル使用メモリ 82,424 KB
実行使用メモリ 60,260 KB
最終ジャッジ日時 2025-12-14 20:01:03
合計ジャッジ時間 4,438 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 22
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

MOD = 998244353
fact = [1, 295201906, 160030060, 957629942, 545208507, 213689172, 760025067, 939830261, 506268060, 39806322, 808258749, 440133909, 686156489, 741797144, 390377694, 12629586, 544711799, 104121967, 495867250, 421290700, 117153405, 57084755, 202713771, 675932866, 79781699, 956276337, 652678397, 35212756, 655645460, 468129309, 761699708, 533047427, 287671032, 206068022, 50865043, 144980423, 111276893, 259415897, 444094191, 593907889, 573994984, 892454686, 566073550, 128761001, 888483202, 251718753, 548033568, 428105027, 742756734, 546182474, 62402409, 102052166, 826426395, 159186619, 926316039, 176055335, 51568171, 414163604, 604947226, 681666415, 511621808, 924112080, 265769800, 955559118, 763148293, 472709375, 19536133, 860830935, 290471030, 851685235, 242726978, 169855231, 612759169, 599797734, 961628039, 953297493, 62806842, 37844313, 909741023, 689361523, 887890124, 380694152, 669317759, 367270918, 806951470, 843736533, 377403437, 945260111, 786127243, 80918046, 875880304, 364983542, 623250998, 598764068, 804930040, 24257676, 214821357, 791011898, 954947696, 183092975, 0]
inv = [1, 759799589, 867498551, 554082439, 935077313, 190826693, 797071813, 561288278, 574600270, 319060424, 178367884, 780342347, 918748953, 716049421, 372477309, 926009008, 970706036, 46268720, 291844170, 621032546, 365971928, 20133513, 738809835, 190257326, 877196715, 761319181, 552775398, 159336557, 326545967, 248000896, 691050464, 108831724, 266913096, 254038565, 683343831, 586709838, 858843854, 773279646, 722009235, 990779119, 719646401, 252907357, 840074893, 400450951, 579105471, 964822723, 154902819, 891531382, 40579732, 151344119, 7870149, 287152769, 971936258, 791990436, 284114094, 84016503, 516168960, 29678053, 7835283, 549295580, 215464019, 373591304, 964051474, 222563229, 144084007, 898409719, 167958732, 157282384, 540157816, 23189943, 654268249, 376429097, 972619373, 702097339, 700338334, 642408721, 289165782, 894682739, 471917511, 371349046, 159945797, 638965240, 371546781, 853479945, 422554714, 567635145, 381456294, 348714095, 280762859, 570156848, 937680149, 119015875, 346852980, 871384541, 290776851, 987399854, 536470464, 507872352, 660828195, 20296095, 0]
d = 10000000


def main():
    n, k = [int(x) for x in input().split()]
    if 2*k > n:
        k = n-k
    if n-k < MOD < n:
        print(0)
        return
    n %= MOD
    r = fact[n//d]
    for i in range(n//d*d, n):
        r = (r*(i+1))%MOD
    c1 = inv[(k+d-1)//d]
    for i in range((k+d-1)//d*d-1, k-1, -1):
        c1 = (c1*(i+1))%MOD
    c2 = inv[(n-k+d-1)//d]
    for i in range((n-k+d-1)//d*d-1, n-k-1, -1):
        c2 = (c2*(i+1))%MOD
    print(r*c1%MOD*c2%MOD)


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