結果
| 問題 |
No.117 組み合わせの数
|
| ユーザー |
|
| 提出日時 | 2017-03-28 22:53:43 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 1,280 ms / 5,000 ms |
| コード長 | 996 bytes |
| コンパイル時間 | 84 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 167,480 KB |
| 最終ジャッジ日時 | 2024-07-06 13:31:40 |
| 合計ジャッジ時間 | 3,099 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 |
ソースコード
from sys import stdin
def solve():
def p(n, k):
if k > n:
return 0
return (fact[n] * factinv[n - k]) % mod
def c(n, k):
if k > n:
return 0
return (p(n, k) * factinv[k]) % mod
def h(n, k):
if n == 0 and k == 0:
return 1
return c(n + k - 1, k)
mod = 10**9 + 7
lim = 2 * 10**6
fact = [1] * (lim + 1)
for i in range(2, lim + 1):
fact[i] = (i * fact[i - 1]) % mod
factinv = [1] * (lim + 1)
factinv[lim] = pow(fact[lim], mod - 2, mod)
for i in range(lim - 1, 0, -1):
factinv[i] = ((i + 1) * factinv[i + 1]) % mod
T = int(stdin.readline())
for tc in range(T):
s = stdin.readline().strip()
n, k = map(int, s[2:-1].split(','))
if s[0] == 'P':
ans = p(n, k)
elif s[0] == 'C':
ans = c(n, k)
else:
ans = h(n, k)
print(ans)
if __name__ == '__main__':
solve()