結果

問題 No.2023 Tiling is Fun
ユーザー 👑 hahhohahho
提出日時 2022-07-15 17:41:29
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 51 ms / 2,000 ms
コード長 934 bytes
コンパイル時間 189 ms
コンパイル使用メモリ 82,608 KB
実行使用メモリ 64,512 KB
最終ジャッジ日時 2024-07-19 11:41:34
合計ジャッジ時間 1,904 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 39 ms
52,604 KB
testcase_01 AC 47 ms
61,824 KB
testcase_02 AC 43 ms
60,032 KB
testcase_03 AC 44 ms
60,160 KB
testcase_04 AC 42 ms
58,576 KB
testcase_05 AC 43 ms
60,160 KB
testcase_06 AC 44 ms
60,348 KB
testcase_07 AC 49 ms
62,464 KB
testcase_08 AC 45 ms
61,056 KB
testcase_09 AC 47 ms
62,592 KB
testcase_10 AC 47 ms
62,336 KB
testcase_11 AC 35 ms
51,968 KB
testcase_12 AC 36 ms
51,712 KB
testcase_13 AC 36 ms
52,096 KB
testcase_14 AC 46 ms
61,312 KB
testcase_15 AC 46 ms
61,184 KB
testcase_16 AC 47 ms
61,440 KB
testcase_17 AC 51 ms
64,512 KB
testcase_18 AC 51 ms
64,512 KB
testcase_19 AC 48 ms
62,464 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

def modinv(x: int, mod: int) -> int:
    """
    Z/(mod Z)上でのxの逆元

    :param x: 整数
    :param mod: 整数
    :return: x * y % mod = 1を満たすy
    """
    s, ps, r, pr = 0, 1, mod, x
    while r != 0:
        pr, (q, r) = r, divmod(pr, r)
        ps, s = s, ps - q * s
    if pr == 1:
        return ps if ps >= 0 else ps + mod
    raise ValueError("base is not invertible for the given modulus")


def factorials_with_inv(k, mod):
    """
    0! ... k! とそれらのmod逆元を求めて返す
    """
    fac = [1] * (k + 1)
    inv = [1] * (k + 1)
    t = 1
    for i in range(1, k + 1):
        t = (t * i) % mod
        fac[i] = t
    t = modinv(t, mod)
    for i in reversed(range(1, k + 1)):
        inv[i] = t
        t = (t * i) % mod
    return fac, inv


mod = 998244353

a, b = map(int, input().split())
a -= 1
b -= 1
fac, inv = factorials_with_inv(a+b, mod)

print(fac[a+b]*inv[b]%mod*inv[a]%mod)
0