2014-06-23
SRM 625
Div1 Easy (250) PalindromePermutations
問題
- 文字列が与えられる
- 文字列をランダムに並べ替えて、左右対称になる確率を求める
方針
- 文字列の長さLが偶数のとき、奇数個の文字があるなら確率ゼロ
- 文字列の長さLが奇数のとき、奇数個の文字がひとつでないなら確率ゼロ
- 対称になる並べ方は、半分の全部の並べ方なので、(L/2)!通り
- 全体はL!通りなので、確率は(L/2)!÷L!
- 同じ文字があるときは、S個あったらS!通りの並べ方が重複
- 分子を(S/2)!で、分母をS!で割っていく
- 誤差死対策として、乗数または除数をカウンタで持っておいて、ひとつずつ乗除算する
- Failed System Test
- 奇数のときの扱いが間違っていた
- https://github.com/firewood/topcoder/blob/master/srm_6xx/srm_625/PalindromePermutations.cpp
結果
x-- +1 50pts 504th/717 rating 1573 -> 1522 (-51)
2項係数でやると死ぬのはわかっていたのだがチャレンジできず。
方針は合っていたが、サンプルが通る誤答を直すのは時間がかかる。
- 38 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 5 https://www.google.com/
- 5 https://www.google.co.jp/
- 2 http://news.google.com/
- 2 Feedspotbot: http://www.feedspot.com
- 1 http://pipes.yahoo.com/pipes/pipe.run?_id=TssmX7bb2xGYLar_l7okhQ&_render=rss&group_id=TopCoder
- 1 http://blog.hatena.ne.jp/kmjp/kmjp.hatenablog.jp/accesslog
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=17&ved=0CEcQFjAGOAo&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/&ei=sNysU67VDMGWkQXazYGwBQ&usg=AFQjCNF7OCqzkXGK7X8vh6Y-RjeI_uDApQ&bvm=bv.69837884,d.dGc
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCUQFjAB&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/&ei=_DKtU-aeK8yC8gWI3oHoAg&usg=AFQjCNF7OCqzkXGK7X8vh6Y-RjeI_uDApQ&sig2=3a5RVRFKnEnluug-JZ88aw&bvm=bv.69837884,d.dGc
- 1 https://www.google.ca/