Задания по программированию.
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Поле в игре представляет собой полоску длины n клеток и шириной в одну клетку. Где-то расположен корабль из k клеток (k≤n). После каждого выстрела сообщения результат: “Мимо”, “ранен” или “убит”
Формат входных данных
Первая строка входных данных содержит число n (1≤n≤10⁹). Втора строка входных данных содержит целое число k (1≤k≤n)
Нужно вывести одно целое число. Решения, правильно работающие при n≤10, будут оцениваться в 40 баллов.
Ввод: 4 2 4 4
Вывод: 3 4
Код: Python 3
1
2
3
python
n = int(input()) # Длина поля
k = int(input()) # Длина корабля
shots = 0 # Счетчик выстрелов
# Создание и заполнение поля
field = [0] * n
for i in range(k):
field[i] = 1
while sum(field) > 0:
# Проверка количества оставшихся клеток с кораблем
if sum(field) == 1:
shots += 1
break
# Проверка нахождения внутри корабля
if shots <= k - 1:
left = shots
right = n - 1
else:
left = 0
right = shots
# Нахождение позиции следующего выстрела
position = (left + right) // 2
# Проверка, что позиция не выходит за пределы поля
if position < 0:
position = 0
elif position >= n:
position = n - 1
# Проверка результата выстрела и обновление состояния поля
if field[position] == 1:
field[position] = 0
shots += 1
else:
shots += 1
print(shots)
На вход программе подается два числа: длина поля и длина корабля. Пример входных данных: `4 2`. Выходные данные программы - количество выстрелов до уничтожения корабля. В данном случае результатом будет число 3.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет