AT_abc011_4 [ABC011D] 大ジャンプ
Description
[problemUrl]: https://atcoder.jp/contests/abc011/tasks/abc011_4
$ XY $ 座標上に、スタート地点とゴール地点が $ 1 $ つずつあります。 スタート地点は $ (0,\ 0) $ にあり、ゴール地点は $ (X,\ Y) $ です。
あなたは、ジャンプという移動法を用いて、移動を行います。 ジャンプを $ 1 $ 回行うと、あなたは、以下の $ 4 $ つのうち、ランダムで選ばれた $ 1 $ つの移動が行われます。
- $ X $ 軸に平行に $ +D $ だけ移動する。
- $ X $ 軸に平行に $ -D $ だけ移動する。
- $ Y $ 軸に平行に $ +D $ だけ移動する。
- $ Y $ 軸に平行に $ -D $ だけ移動する。
これらの移動は、どれもちょうど $ 1/4 $ の確率で選択されます。
あなたは、最初にスタート地点におり、ちょうど $ N $ 回のジャンプでゴール地点にたどり着きたいです。
目的を達成できる確率を出力しなさい。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ D $ $ X $ $ Y $
- $ 1 $ 行目には、ジャンプする回数を表す整数 $ N\ (1\ ≦\ N\ ≦\ 1,000) $ と、ジャンプの距離 $ D\ (1\ ≦\ D\ ≦\ 10^9) $ が、スペース区切りで与えられる。
- $ 2 $ 行目には、ゴール地点の座標を表す整数 $ X,\ Y\ (-10^9\ ≦\ X,\ Y\ ≦\ 10^9) $ が、スペース区切りで与えられる。
Output Format
あなたが最終的にゴール地点にたどり着ける確率を $ 1 $ 行で出力せよ。出力の末尾にも改行をいれること。
なお、想定解答との絶対誤差または相対誤差が、$ 10^{-9} $ 以下であれば、正解として扱われる。
Explanation/Hint
### 部分点
$ 1\ ≦\ N\ ≦\ 8 $ のケースに全て正解すると、部分点として $ 90 $ 点が与えられる。
$ 1\ ≦\ N\ ≦\ 30 $ のケースに全て正解すると、追加で $ 10 $ 点が与えられる。
全てのケースに正解すると、ボーナス点として $ 1 $ 点が与えられる。
### Sample Explanation 1
$ (0,\ 0) $ から $ 2 $ 回のジャンプで $ (10000000,\ 10000000) $ へ飛ぶ確率は、 $ 1/8 $ です。
### Sample Explanation 2
偶数の距離のジャンプでは、奇数の座標にたどり着くことはできないため、到達する確率は $ 0 $ となります。