結果
問題 | No.117 組み合わせの数 |
ユーザー | gigurururu |
提出日時 | 2015-01-11 17:16:56 |
言語 | PyPy2 (7.3.15) |
結果 |
AC
|
実行時間 | 975 ms / 5,000 ms |
コード長 | 907 bytes |
コンパイル時間 | 656 ms |
コンパイル使用メモリ | 77,056 KB |
実行使用メモリ | 258,160 KB |
最終ジャッジ日時 | 2024-06-13 03:47:04 |
合計ジャッジ時間 | 2,987 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ソースコード
import re def memo(f): m = [] def memof(arg1,arg2): for i in range(len(m),arg1+1):m.append(f(i,arg2)) return f(arg1,arg2) if (arg1<0) else m[arg1] return memof Inv = memo(lambda m,mod: ((mod-mod/m)*Inv(mod%m,mod))%mod if m>1 else 1 if m>=0 else 0) Fact = memo(lambda m,mod: (m*Fact(m-1,mod))%mod if m>0 else 1 if m==0 else 0) Factr = memo(lambda m,mod: (Inv(m,mod)*Factr(m-1,mod))%mod if m>0 else 1 if m==0 else 0) def combination_len(n,r,mod): return Fact(n,mod)*Factr(r,mod)%mod*Factr(n-r,mod)%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 Fact(n,mod)*Factr(n-r,mod)%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),1000000007))