마천루
Problem
고층 건물에는 n
층이 있습니다. p
층에서 유리 공을 떨어뜨려 공이 깨지면 p+1
층에서 공을 떨어뜨리면 공도 깨지는 것으로 알려져 있습니다. . 공은 마지막 층에서 던지면 항상 부러지는 것으로 알려져 있습니다.
공이 떨어질 때 부서지는 최소 층 수를 정의하려고 합니다. 실험을 위해 두 개의 공이 있습니다. 모두 분할할 수 있지만 최종 결과에서 해당 숫자를 절대적으로 확신해야 합니다.
이 문제를 풀기에 충분한 던지기 횟수를 결정하세요.
입력
프로그램은 마천루 n의 층수를 입력으로 받습니다.
출력
언제나 문제를 풀 수 있는 가장 적은 수의 던지기를 출력해야 합니다.
참고
첫 번째 예에 대한 설명입니다. 2층에서 공을 던져야 합니다. 깨지면 1층에서 두 번째 공을 던지고, 깨지지 않으면 3층에서 공을 던집니다.
힌트
<사업부>1. 공이 하나만 있는 경우 어떻게 해야 합니까?
<사업부>2. 두 개의 공이 있고
k
층에서 하나의 공을 던졌습니다. 공이 부러지는지 아닌지에 따라 우리는 어떻게 행동할까요?
<사업부>3.
f(n)
을 마천루에
n
층이 있는 경우 원하는 층을 결정하는 데 필요한 최소 던지기 수라고 합니다. 더 작은
a
.
값의 경우
f(a)
값으로
f(n)
를 표현합니다.
예
<헤드>
# |
입력 |
출력 |
것>
<몸>
1 |
4 |
2 |
2 |
7 |
3 |
테이블>
Запрещенные операторы: for
; while
; until