結果
問題 | No.117 組み合わせの数 |
ユーザー | ir5 |
提出日時 | 2024-06-15 21:22:44 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 938 bytes |
コンパイル時間 | 603 ms |
コンパイル使用メモリ | 82,164 KB |
実行使用メモリ | 220,408 KB |
最終ジャッジ日時 | 2024-06-15 21:22:49 |
合計ジャッジ時間 | 3,707 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ソースコード
MOD = 10 ** 9 + 7 def main(): fact = [1] for i in range(1, 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()