우편함 제조사 문제
면접 대비시간 제한1초메모리 제한128 MB
폭죽 m개까지 견디는 동일한 우체통 k개가 있을 때, 견딜 수 있는 최대 개수를 정확히 알아내는 데 필요한 최악의 경우 폭죽 소비량의 최솟값을 구한다.
문제
어느 우편함 제조사가 새 우편함 시제품이 폭죽을 몇 개까지 견딜 수 있는지 알고 싶어 합니다. 그는 동일한 시제품 개()를 제공하며, 각 시제품에는 폭죽을 최대 개()까지 넣을 수 있습니다. 시제품 하나가 견딜 수 있는 폭죽의 최대 개수를 알아내는 것이 목표입니다.
우편함을 검사할 때는 폭죽을 몇 개 넣고 터뜨립니다.
- 넣은 폭죽의 수가 그 우편함이 견딜 수 있는 수 이하이면, 우편함은 멀쩡하여 다시 사용할 수 있습니다.
- 그렇지 않으면 우편함은 파괴되어 다시 사용할 수 없습니다.
터뜨린 폭죽은 우편함이 견뎠는지 여부와 관계없이 모두 소모됩니다. 즉, 한 번의 검사 비용은 그때 사용한 폭죽의 수와 같습니다. 시제품이 견딜 수 있는 최대 개수를 정확히 알아내되, 최악의 경우에 사용하는 폭죽의 총수를 최소로 하는 전략을 찾아야 합니다.
다음을 가정합니다.
- 우편함이 폭죽 개를 견딜 수 있다면, 개도 견딜 수 있습니다.
- 폭죽을 터뜨린 뒤 우편함은 완전히 파괴되거나 전혀 손상되지 않은(재사용 가능한) 두 상태 중 하나입니다.
우편함이 개뿐이라면 폭죽을 개, 개, … 이렇게 하나씩 늘려 가며 검사해야 합니다. 최악의 경우(폭죽 개를 가득 넣어도 견디는 경우) 개의 폭죽이 필요합니다. 우편함이 더 많으면 더 적은 폭죽으로 해결할 수 있습니다.
시제품이 견딜 수 있는 최대 개수는 이상 이하의 정수이며, 폭죽 개를 가득 넣어도 견딘다면 그 답은 입니다. 이 최대 개수를 알아내기 위해 최악의 경우에 필요한 폭죽의 최소 개수를 구하세요.
입력
첫 줄에 테스트 케이스의 수를 나타내는 정수 ()이 주어집니다. 이어지는 개의 줄에는 각 테스트 케이스가 정수 와 으로 주어지며, 두 수는 공백 하나로 구분됩니다.
출력
각 테스트 케이스마다, 우편함 시제품이 견딜 수 있는 폭죽의 최대 개수를 알아내기 위해 최악의 경우에 필요한 폭죽의 최소 개수를 한 줄에 하나씩 정수로 출력하세요.