SRM 245 Div2 Med (Problem 600) Flush:日本語訳のようなもの
フラッシュ
eiya君はフラッシュというカードゲームをしています。このゲームは、手札の中の同じマークのカードの枚数の最大値が得点になります。例えば、手札にスペード5枚、ハート2枚、他0枚の場合、5点です。eiya君はこのゲームを有利に進めたいです。
eiya君は今手札を持っていません。今からデッキからnumber枚のカードを引きます。デッキのカードはマークで4種類に分けることができ、これらはそれぞれS0,S1,S2,S3枚です。このとき、number枚のカードを引き終わった後のeiya君の得点の期待値を求めてください。
補足:例えば、1/2の確率で得点が3に、残り1/2の確率で得点が2になるとき、期待値は(0.5*3)+(0.5*2)=2.5です。
クラス定義
(メゾットは必ずpublicにしてください)
制限
- 実行時間2.000
- メモリ (MB)64
注意
値は32bit整数に収まらない可能性があります。 答えは絶対誤差or相対誤差で10^-9以下になるようにしてください。
制約
|S|==4. 0<=Si<=13 0<=number<=Sの合計
テストケース例
-
input
- S { 2, 2, 2, 2 }
- number 2
outputReturns 1.1428571428571428note始めに一枚引きます。次に1/7の確率で始めに引いたカードと同じマークのカードを引きます。得点の期待値は (1/7 * 2) + (6/7 * 1) = 8/7 = 1.1428571428571428です。 -
input
- S { 1, 4, 7, 10 }
- number 22
outputReturns 10.0note全てのカードを引くため、一番大きい枚数の10が答えになります。 -
input
- S { 13, 13, 13, 13 }
- number 49
outputReturns 13.0note48枚引いた段階で、少なくとも一つが13枚になっているか、全て12枚かのどちらかです。そこからさらに一枚引くので、少なくとも一つは13枚になります。 -
input
- S { 13, 13, 13, 13 }
- number 26
outputReturns 8.351195960938014 -
input
- S { 13, 13, 13, 13 }
- number 0
outputReturns 0.0