結果
| 問題 |
No.117 組み合わせの数
|
| コンテスト | |
| ユーザー |
ayaoni
|
| 提出日時 | 2020-11-27 00:19:30 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 192 ms / 5,000 ms |
| コード長 | 892 bytes |
| コンパイル時間 | 257 ms |
| コンパイル使用メモリ | 82,376 KB |
| 実行使用メモリ | 108,180 KB |
| 最終ジャッジ日時 | 2024-07-23 21:06:08 |
| 合計ジャッジ時間 | 986 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 |
ソースコード
import sys
def I(): return int(sys.stdin.readline().rstrip())
def S(): return sys.stdin.readline().rstrip()
mod = 10**9+7
fac = [0]*(2*10**6)
fac[0] = 1
for i in range(1,2*10**6):
fac[i] = (fac[i-1]*i) % mod
a = pow(fac[-1],mod-2,mod)
fac_inv = [0]*(2*10**6)
for i in range(2*10**6-1,-1,-1):
fac_inv[i] = a
a = (a*i) % mod
def nCk(n,k):
if n < k:
return 0
return (fac[n]*fac_inv[k]*fac_inv[n-k]) % mod
def nPk(n,k):
if n < k:
return 0
return (fac[n]*fac_inv[n-k]) % mod
def nHk(n,k):
if n == 0:
if k == 0:
return 1
return 0
return (fac[n+k-1]*fac_inv[k]*fac_inv[n-1]) % mod
N = I()
for _ in range(N):
X = S()
i = X.index(',')
N = int(X[2:i])
K = int(X[i+1:-1])
if X[0] == 'C':
print(nCk(N,K))
elif X[0] == 'P':
print(nPk(N,K))
else:
print(nHk(N,K))
ayaoni