No.2222 Respawn
タグ : / 解いたユーザー数 29
作問者 :


問題文
個のマスが一列に並んでいます。左から 番目のマスをマス と呼びます。
いくつかのマスには罠が仕掛けられており、マスの状態は長さ の文字列 で表されます。
はマス に対応し、'.
' は罠がないことを、'#
' は罠があることを表します。
stop くんは現在マス に立っていて、マス に行きたいです。
さらに stop くんは変数 (初期値は )を持っており、 に現在の居場所を「セーブ」することができます。
stop くんはマス にちょうど止まるまで、次の3種類の操作のいずれかを無作為に選び行うことを繰り返します。 ここで3種類の操作は等確率で、かつ毎回独立に選ばれるものとします。
- 右方向に1マス進む。マス を超えた場合や '
#
' のマスにちょうど止まった場合はゲームオーバーとなり、マス に飛ばされる。 - 右方向に2マス進む。マス を超えた場合や '
#
' のマスにちょうど止まった場合はゲームオーバーとなり、マス に飛ばされる。 - セーブする。現在マス にいるとして、 と更新する。
このとき、操作を行う回数(3種類の合計)の期待値を求めてください。
本問題の制約下において、期待値は必ず定義されます。また、この制約下で解は を超えないことが証明できます。
入力
- は整数
- は '
.
' と '#
' のみから成る長さ の文字列 - と は '
.
' - において '
#
' は2文字以上連続しない
出力
操作を行う回数(3種類の合計)の期待値を出力してください。
想定解答との絶対誤差または相対誤差が 以下であれば正解とみなされます。
サンプル
サンプル1
入力
2 ..
出力
3
このケースでは、1マス進むという操作が選ばれたら終了です。
期待値は です。
サンプル2
入力
4 ..#.
出力
7.5
例えばマス でセーブしていた場合、マス に止まったりマス を超えたりした場合でも飛ばされるのはマス になります。
期待値は です。
サンプル3
入力
10 .#...#..#.
出力
23.130836237
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。