結果
問題 | No.117 組み合わせの数 |
ユーザー | gigurururu |
提出日時 | 2015-01-05 00:04:48 |
言語 | Ruby (3.3.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 616 bytes |
コンパイル時間 | 257 ms |
コンパイル使用メモリ | 7,680 KB |
実行使用メモリ | 85,616 KB |
最終ジャッジ日時 | 2024-06-13 02:30:45 |
合計ジャッジ時間 | 12,892 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
コンパイルメッセージ
Main.rb:31: warning: assigned but unused variable - r Syntax OK
ソースコード
Pow={} def pow(a,b,mod) return Pow[[a,b]] if Pow[[a,b]] r=1 while b>0 r*=a if b&1>0 r%=mod if r>=mod a*=a a%=mod if a>=mod b>>=1 end Pow[[a,b]]=r end P={} def nPr(n,r,mod) return 0 if n<r P[[n,r]]||=(1..r).inject(1){|s,i|(s*((n-i+1)%mod))%mod} end C={} def nCr(n,r,mod) return 0 if n<r C[[n,r]]||=(1..r).inject((1..r).inject(1){|s,i|(s*((n-i+1)%mod))%mod}){|s,i|(s*pow(i,mod-2,mod))%mod} end def nHr(n,r,mod) nCr(n+r-1,r,mod) end r=[*0..1000000] m=Hash[?C,:nCr,?P,:nPr,?H,:nHr] gets.to_i.times{ a,b,c=gets.chomp.split(/\(|,|\)/) p send(m[a],b.to_i,c.to_i,1000000007) }