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