E D R , A S I H C RSS

금고


About 금고


N층 빌딩이 있다. 이 빌딩의 F층은 금고를 떨어뜨렸을때에 부서지는 최소층이다. 다시 말하면, F층을 포함하여 그위의 층에서 금고를 떨어뜨리면 무조건 부서지며, F층의 아래층에서 금고를 떨어뜨릴 떄에는 금고는 절 부서지지 않는다.(N층에서도 부서지지 않으며, 1층에서도 부서질수도 있다.)

새로 개발한 금고의 견고함을 측정해서 광고하려고 하는데, 금고 K개를 가지고 이 빌딩의 F층이 몇 층인지를 알고 싶다. 가능한 방법은 임의의 층에서 직접 금고를 떨어뜨리고 그 결과를 확인 하는 것 뿐이다. 물론, 부서진 금고는 다시 사용할수 없으며 부서지지 않았다면 다시 사용할수 있다.

이런상황에서 K개의 금고를 가지고 F층이 몇층이던 간에 F층을 알아낼수 있는 최소한의 금고 낙하 획수를 E(N,K)이라 하자. 예를 들어 K = 1이라면 F를 알아내기 전에 금고가 부서지면 안되기 때문에 1층부터 차례로 올라가면서 금고를 낙하해야 하며 많아야 N번이면 F층을 알아 낼수 있다. 따라서 E(N, 1) = N이다. 건물의 층수를 나타내는 정수 N과 금고의 개수를 나타내는 정수 k가 주어 졌을때, E(N,K)를 계산하는 프로그램을 작성하시오.

입력

입력은 표준 입력(standard input)을 통해 받아들인다. 입력의 첫줄에는 테스트 케이스의 개수 T(1 <= T <= 10)가 주어진다. 각 테스트 케이스는 한줄에 빌딩 전체 층수와 금고의 개수를 의미하는 두개의 정수 N과 K(1 <= K <= N <= 500)가 순서대로 주어진다.

출력

출력은 표준출력(standard output)을 통하여 출력한다. 각 테스트 케이스에 해서 E(N, K)를 한줄에 하나씩 출력하시오.

Sample Input

3
5 1
4 2
8 3

Sample Output

5
3
4

Extra Test Input

10
4 2
382 5
500 1
500 3
496 2
500 500
481 4
255 7
255 8
256 9

Extra Test Output

3
10
500
15
31
9
11
9
8
9

풀이

작성자 사용언어 개발시간 코드
김상섭 C++ 많이..ㅡㅜ 금고/김상섭
하기웅 C++ 10분ㅡㅡ; 금고/하기웅
조현태 C++ ? 금고/조현태
문보창 C++ 많이..ㅡㅜ 금고/문보창

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:46
Processing time 0.0127 sec