結果
問題 | 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 |
(要ログイン)
ソースコード
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))