Конец уроков
Вы решили задачу. Теперь можно сравнить подходы.
К длительности уроков добавляем только перемены перед окончанием нужного урока.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Подсчёт двух видов перемен
До конца n-го урока проходят n−1 перемена. После нечётных уроков коротких перемен n//2, после чётных длинных — (n−1)//2. Переводим итоговое число минут в часы и минуты.
n = int(input())
short_breaks = n // 2
long_breaks = (n - 1) // 2
total_minutes = 9 * 60 + n * 45 + short_breaks * 5 + long_breaks * 15
print(total_minutes // 60, total_minutes % 60)
Время: O(1) арифметических операций. Память: O(1) числовых переменных.
Другой способ: Пошаговое расписание
Моделируем каждый урок и, если он не последний из нужных, следующую перемену. Такая модель легко переносится на изменяемую длительность занятий.
n = int(input())
time = 9 * 60
for lesson in range(1, n + 1):
time += 45
if lesson < n:
time += 5 if lesson % 2 == 1 else 15
print(time // 60, time % 60)
Время: O(n), при ограничении n≤10 — O(1). Память: O(1) числовых переменных.
На что обратить внимание
- Перемена после указанного урока в ответ не входит.
- Сначала идёт короткая перемена.
- По условию часы и минуты выводятся двумя числами, без обязательного ведущего нуля.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.