2014-06-21
ABC#011 D.大ジャンプ
問題
XY座標の原点からゴール(X,Y)までジャンプで移動する。
ジャンプは、X,Y軸に平行に上下左右のどれかにDだけランダムに移動する。その確率は1/4。
ちょうどN回ジャンプしたときにゴール地点にいる確率を求めよ。
1<=N<=1000
1<=D<=10^9
-10^9 <= X,Y <= 10^9
考え方
まず、X,Yはそれぞれ絶対値をとっても問題ない。
XとYがそれぞれDで割り切れないといけない。
XとYをそれぞれDで割ったものがゴールへの最短回数になるが、今回はN回ちょうどでなければならない。
Nを、上下方向にn回、左右方向にm(=N-n)回使ったと仮定する。
y=Y/Dとすると、n回でyにならないといけないので、上にup回、下にdown回とすると、up-down=yかつup+down=nでないといけない。
なので、このとき、up=(y+n)/2回、down=n-up回動くことになる。
左右についても、right=(x+m)/2回、left=m-right回動くことになる。
(upやrightの計算の時、2で割って割り切れないといけないことに注意)
このときの確率は、(1/4)^N * Comb(N, up+down) * Comb(up+down, up) * Comb(right+left, right)になる。
nをN回分回して計算すればよい。
また、(1/4)^1000とかはdoubleの精度を超えるので、logとって計算するなどが必要。
- 13 https://www.google.co.jp/
- 5 http://pipes.yahoo.com/pipes/pipe.info?_id=VPw6npu13RGKo15vBRNMsA
- 2 http://d.hatena.ne.jp/keyword/string
- 2 http://t.co/rScDBEsKv1
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCMQFjAB&url=http://d.hatena.ne.jp/phyllo_algo/20140621/1403369080&ei=P62nU8XaAYmokwXo1IGgDA&usg=AFQjCNF7tZ8Z6QpDpIxdx69T4QrcC9lhQg&bvm=bv.69411363,d.dGI
- 2 https://www.google.com/
- 1 http://d.hatena.ne.jp/jetbead/20120216/1329408665
- 1 http://d.hatena.ne.jp/valleri/
- 1 http://hatenablog.com/k/keywordblog/C++
- 1 http://hatenablog.com/k/keywordblog/C++?mode=rss