Problem
超高層ビルは n
フロアあります。階数 p
からガラス玉を落として割れた場合、階数 p+1
からガラス玉を落としても割れることが知られています.また、最下階から投げると必ずボールが割れることも知られています。
ボールが落下したときに壊れる最小フロア数を定義したいと考えています。実験用に、2 つのボールがあります。それらをすべて分割することはできますが、最終結果でその数を完全に確信している必要があります.
この問題を解決するには、何回投げれば十分かを判断してください。
入力
プログラムは超高層ビル n の階数を入力として受け取ります。
出力
常に問題を解決できる最小数のスローを出力する必要があります。
注意
最初の例へのコメント。 2階からボールを投げる必要があります。壊れたら1階から2球目を投げ、壊れなければ3階から投げます。
ヒント
1.ボールが 1 つしかない場合はどうすればよいですか?
2.ボールが 2 つあり、フロア番号 k
から 1 つのボールを投げたとします。ボールが割れるかどうかに応じて、どのように行動しますか?
3.超高層ビルに
n
階がある場合、目的の階を決定するために必要なスローの最小数を
f(n)
とします。より小さい
a
.
値の
f(a)
値に関して
f(n)
を表現します。
例
<頭>
# |
入力 |
出力 |
<本体>
1 |
4 |
2 |
2 |
7 |
3 |
表>
Запрещенные операторы: for
; while
; until