見出し画像

AtCoder Begginer Contest 194 D Journey の特に期待値に関して

1.はじめに

AtCoder Begginer Contest 194 D Journey について書きたいと思います。問題概要は、1からNまで、同様に確からしく 1/N で出るとき、2~N までのすべてが出るまでの回数の期待値を求めよというものです。数Ⅲの無限等比級数を使った計算が途中で出てきます。

2.例 サイコロで1の目が出るまでのサイコロを振る回数の期待値

 サイコロで1の目が出るまでのサイコロを振る回数の期待値は、

画像1

 のように無限等比級数で得られます。両辺5/6倍して、引き算すると、

画像2

 が得られるので、右辺を公式で計算すると、E=6 が得られます。
また、最初の式を変形して、

画像3

と変形して、E=6 を得ることもできます。
さて、最後の 式は、

画像4

と変形できます。このことは、1回は必ず試行し、確率5/6 で、またE回の試行を行うということを意味しています。AtCoderの公式解説に書かれている式はこのように導出されます。確率p の事象が起こるまでの回数の期待値は、E=1+(1-p)E から、E=1/p となることが分かります。

3.Journeyの実装

はじめは、2~Nの何が出てもよいので、確率は (N-1)/N となるから、期待値は、N/(N-1) となります。その後は、所望の数字が出るごとに、確率は、
(N-2)/N , (N-3)/N , ・・・1/N となっていくので、対応する期待値は、その逆数となります。それらを足し合わせれば答えになります。

n=int(input())
ans=0
for i in range(n-1):
 ans+=n/(n-1-i)
print(ans)

いいなと思ったら応援しよう!