結果
問題 | No.117 組み合わせの数 |
ユーザー | ir5 |
提出日時 | 2024-06-15 21:23:28 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,028 ms / 5,000 ms |
コード長 | 942 bytes |
コンパイル時間 | 571 ms |
コンパイル使用メモリ | 82,560 KB |
実行使用メモリ | 243,200 KB |
最終ジャッジ日時 | 2024-06-15 21:23:34 |
合計ジャッジ時間 | 5,628 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ソースコード
MOD = 10 ** 9 + 7 def main(): fact = [1] for i in range(1, 2 * 10 ** 6 + 1): fact.append(fact[-1] * i % MOD) inv = [] for f in fact: inv.append(pow(f, MOD - 2, MOD)) t = int(input()) for _ in range(t): s = input() n, k = list(map(int, s[2:-1].split(","))) if s[0] == "C": if k > n: ans = 0 else: ans = fact[n] * inv[k] % MOD * inv[n - k] % MOD elif s[0] == "P": if k > n: ans = 0 else: ans = fact[n] * inv[n - k] % MOD elif s[0] == "H": if n == 0: if k == 0: # ???? ans = 1 else: ans = 0 else: # C(n + k - 1, k) ans = fact[n + k - 1] * inv[k] % MOD * inv[n - 1] % MOD print(ans) main()