Кулі#2442

Кулі

1 секунда
64 мегабайти
Складна

Класичну головоломку «Дві скляні кулі» часто формулюють так:

"Маючи дві однакові скляні кулі, ви хочете визначити найнижчий поверх у -поверховій будівлі, при падінні з якого вони розіб'ються. Вважається, що кулі не ушкоджуються, якщо їх кинути з поверху нижче цієї межі. Яка стратегія мінімізує найгірший випадок за кількістю кидків?"

Уявімо, що у нас є лише одна куля. Тоді нам доведеться кидати її з кожного поверху, починаючи з до по порядку, що в найгіршому випадку вимагатиме кидків.

Тепер розглянемо випадок з двома кулями. Припустимо, ми кидаємо першу кулю з поверху . Якщо куля розбивається, ми залишаємося з однією кулею і повинні послідовно кидати її з поверхів до n-1, в результаті чого маємо максимум кидків у найгіршому випадку (перша куля падає один раз, друга — максимум n-1 разів). Якщо ж куля не розбивається, коли її кидають з поверху , задача зводиться до кидків з поверхів n+1 до . У будь-якому разі треба враховувати, що вже зроблено один кидок. Тож мінімальна кількість кидків у найгіршому випадку — це мінімум по всіх .

Вам потрібно написати програму, яка визначить мінімальну кількість кидків, необхідних у найгіршому випадку, якщо задано куль і поверхів у будівлі.

Вхідні дані

Перший рядок вхідних даних містить одне ціле число (1 \leq P \leq 1000) — кількість тестових наборів, що далі. Кожен тест складається з одного рядка, який містить три () десяткових цілих числа: номер задачі, пробіл, кількість куль (1 \leq B \leq 50), пробіл та кількість поверхів у будівлі (1 \leq M \leq 1000).

Вихідні дані

Для кожного тестового набору виведіть один рядок з такими значеннями: номер тестового набору, пробіл і мінімальне число кидків, необхідних для відповідних значень і .

Приклади

Приклад 1

Loading
Loading