結果
問題 | No.117 組み合わせの数 |
ユーザー | roaris |
提出日時 | 2019-12-04 13:14:55 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 535 ms / 5,000 ms |
コード長 | 680 bytes |
コンパイル時間 | 217 ms |
コンパイル使用メモリ | 82,228 KB |
実行使用メモリ | 231,736 KB |
最終ジャッジ日時 | 2024-05-07 14:13:07 |
合計ジャッジ時間 | 1,645 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ソースコード
def inv(x): return pow(x, MOD-2, MOD) def P(n, k): if k>n: return 0 return fact[n]*inv(fact[n-k]) def C(n, k): if k>n: return 0 return fact[n]*inv(fact[k])*inv(fact[n-k]) def H(n, k): return C(n+k-1, k) MOD = 10**9+7 fact = [1] for i in range(1, 2*10**6+100): fact.append(fact[-1]*i%MOD) T = int(input()) for _ in range(T): Si = input() mark = Si.find(',') N = int(Si[2:mark]) K = int(Si[mark+1:-1]) if Si[0]=='P': print(P(N, K)%MOD) elif Si[0]=='C': print(C(N, K)%MOD) elif Si[0]=='H': if N==K==0: print(1) else: print(H(N, K)%MOD)