結果
問題 | No.117 組み合わせの数 |
ユーザー | gigurururu |
提出日時 | 2015-01-11 17:17:27 |
言語 | PyPy2 (7.3.15) |
結果 |
AC
|
実行時間 | 609 ms / 5,000 ms |
コード長 | 678 bytes |
コンパイル時間 | 122 ms |
コンパイル使用メモリ | 76,928 KB |
実行使用メモリ | 126,928 KB |
最終ジャッジ日時 | 2024-06-13 03:47:13 |
合計ジャッジ時間 | 1,728 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ソースコード
import re def combination_len(n,r,mod): return 0 if n<r else Fact[n]*Factr[r]*Factr[n-r]%mod def repeated_combination_len(n,r,mod): return 1 if n==0 and r==0 else combination_len(n+r-1,r,mod) def permutation_len(n,r,mod): return 0 if n<r else Fact[n]*Factr[n-r]%mod Inv = [1]*2000000 Fact = [1]*2000000 Factr = [1]*2000000 Mod = 1000000007 for i in range(2,2000000): Inv[i] = (Mod-Mod/i)*Inv[Mod%i]%Mod Fact[i] = i*Fact[i-1]%Mod Factr[i] = Inv[i]*Factr[i-1]%Mod m={"C":combination_len,"P":permutation_len,"H":repeated_combination_len} for _ in range(input()): a,b,c = filter(len,re.split("\(|\)|,",raw_input())) print(m[a](int(b),int(c),Mod))