問題一覧 > 通常問題

No.144 エラトステネスのざる

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 小数誤差許容問題 絶対誤差または相対誤差が106 以下。ただし、ジャッジ側の都合で500桁未満にしてください
タグ : / 解いたユーザー数 359
作問者 : sugim48
44 ProblemId : 242 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2015-11-14 17:47:25

問題文

「エラトステネスのふるい」は、与えられた自然数 N 以下の素数を列挙する古典的アルゴリズムである。
以下にそのアルゴリズムを示す。

まず、2 から N までの整数からなる「候補リスト」と、空の「素数リスト」を用意する。
候補リストが空になるまで、次のステップを繰り返す。

候補リストに含まれる最小の数を x とする。
x を素数リストへ移動し、2x, 3x, 4x, ... を候補リストから削除する
候補リストが空になったとき、素数リストに含まれる数が素数である。

ゆきこちゃんはこのアルゴリズムを実行し、N 以下の素数を列挙しようとしている。
ただし、うっかり者のゆきこちゃんは、ステップによっては下線部の処理を丸々飛ばしてしまう。
つまり、x を素数リストへ移動した後、すぐに次のステップへ移ってしまう。
このため、素数として列挙される数は正しくない可能性がある。

さて、各ステップで下線部の処理が行われる確率が p であるとする。
このとき、素数として列挙される数の個数の期待値を求めよ。

入力

N p

2N106
0p1
p は小数第 5 位まで与えられる。

出力

素数として列挙される数の個数の期待値を出力せよ。
絶対誤差または相対誤差が 106 以下ならば許容される。

サンプル

サンプル1
入力
10 1.00000
出力
4

しっかり者のゆきこちゃんは、下線部の処理を必ず行う。
このとき、アルゴリズムは正しく実行され、2,3,5,7 が素数として列挙される。

サンプル2
入力
10 0.00000
出力
9

超うっかり者のゆきこちゃんは、下線部の処理をまったく行わない。
このとき、2 から 10 までのすべての数が素数として列挙される。

サンプル3
入力
10 0.50000
出力
5.75

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。