Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Поле в игре «Речной бой» представляет собой полоску длины n клеток и шириной в одну клетку. Где‑то на поле расположен корабль из k клеток (k≤n).
Какое наименьшее число выстрелов необходимо, чтобы гарантированно потопить корабль? После каждого выстрела сообщается его результат: «мимо», «ранен» или «убит».
Формат входных данных
Первая строка входных данных содержит целое число n (1≤n≤109). Вторая строка входных данных содержит целое число k (1≤k≤n).
Формат выходных данных
Выведите одно целое число — количество выстрелов.
python
n = int(input())
k = int(input())
if k == 1:
print(1)
else:
while k != 1:
if k >= (n+1) // 2:
k = (n+1) // 2
else:
n = (n+1) // 2
print(n)
Пример работы программы:
Входные данные:
10
2
Выходные данные:
3
В данном примере игровое поле имеет длину 10 клеток, а корабль занимает 2 клетки. Программа сначала проверяет, равно ли k единице - нет, поэтому она переходит к следующему шагу. Затем она вычисляет среднее значение между 1 и 10, которое равно 5, и проверяет, является ли k больше или равным этому значению. В данном случае это не так, поэтому программа устанавливает новое значение для n, равное 5, и повторяет шаг 2. Теперь игровое поле имеет длину 5 клеток, а корабль занимает 2 клетки. Опять же, программа вычисляет среднее значение между 1 и 5, которое равно 3, и проверяет, является ли k больше или равным этому значению. В данном случае это так, поэтому программа уменьшает размер корабля до 3 и выводит результат.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет