結果
問題 | No.117 組み合わせの数 |
ユーザー | nanae |
提出日時 | 2017-03-28 22:38:10 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 895 bytes |
コンパイル時間 | 184 ms |
コンパイル使用メモリ | 81,748 KB |
実行使用メモリ | 108,444 KB |
最終ジャッジ日時 | 2024-07-06 13:31:18 |
合計ジャッジ時間 | 1,287 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ソースコード
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): 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(input()) for tc in range(T): s = input() 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()