結果
問題 | No.117 組み合わせの数 |
ユーザー | 草苺奶昔 |
提出日時 | 2023-02-24 19:35:42 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 971 bytes |
コンパイル時間 | 457 ms |
コンパイル使用メモリ | 82,396 KB |
実行使用メモリ | 237,096 KB |
最終ジャッジ日時 | 2024-09-13 03:46:18 |
合計ジャッジ時間 | 5,024 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ソースコード
MOD = 998244353 fac = [1] ifac = [1] for i in range(1, int(2e6) + 10): fac.append((fac[-1] * i) % MOD) ifac.append((ifac[-1] * pow(i, MOD - 2, MOD)) % MOD) def C(n: int, k: int) -> int: if n < 0 or k < 0 or n < k: return 0 return ((fac[n] * ifac[k]) % MOD * ifac[n - k]) % MOD def P(n: int, k: int) -> int: if n < 0 or k < 0 or n < k: return 0 return (fac[n] * ifac[n - k]) % MOD def H(n: int, k: int) -> int: """itertools.combinations_with_replacement""" return C(n + k - 1, k) if __name__ == "__main__": import sys sys.setrecursionlimit(int(1e9)) input = lambda: sys.stdin.readline().rstrip("\r\n") T = int(input()) for _ in range(T): s = input() op = s[0] inner = s[1:-1] n, k = map(int, inner.split(",")) if op == "C": print(C(n, k)) elif op == "P": print(P(n, k)) elif op == "H": print(H(n, k))