Будильник и лишние минуты
Условие
Утром ты ставишь будильник на время H:M, а потом внезапно решаешь «посплю ещё K минут». Телефон честно прибавляет минуты и показывает новое время на 24‑часовых часах.
Твоя задача — узнать, что покажет телефон.
Важно: K может быть очень большим (как на олимпиадах, значения могут не помещаться в 32‑битный int; в Python это не проблема).
Формат ввода
В одной строке записаны три целых числа: H M K.
- H — часы (от 0 до 23)
- M — минуты (от 0 до 59)
- K — сколько минут добавить (от 0 до 1_000_000_000)
Формат вывода
Выведи время после добавления K минут в формате HH:MM (две цифры на часы и две на минуты, с ведущими нулями при необходимости).
Ограничения
- 0 ≤ H ≤ 23
- 0 ≤ M ≤ 59
- 0 ≤ K ≤ 1_000_000_000
- Все вычисления должны выполняться быстро (за время меньше 1 секунды).
Пример
Ввод:
7 50 15
Вывод:
08:05Как решать — идея подхода
Приём: Перевод времени в минуты + модуль
Ключевое наблюдение: на 24‑часовых часах время «зациклено». После 24*60 минут мы снова в 00:00, поэтому достаточно считать по модулю 1440.
Приём: переводим время в «минуты от начала суток». Так проще прибавлять K (даже очень большое), а затем вернуть результат обратно в часы и минуты.
План решения:
- Посчитай
total = H*60 + M— сколько минут прошло с 00:00. - Прибавь лишние минуты:
total += K. - Оставь только время внутри текущих суток:
total %= 24*60. - Восстанови часы и минуты:
newH = total // 60newM = total % 60- Выведи в формате с ведущими нулями:
HH:MM(например, через форматирование:02d).
Сложность: O(1) по времени и памяти — всего несколько арифметических операций.
Частая ошибка: забыть про переход через сутки и не сделать % (24*60), из‑за чего при большом K часы могут выйти за диапазон 0..23. Ещё одна грабля — вывести без ведущих нулей (должно быть 08:05, а не 8:5).
Разберись руками
Будильник стоит на 7:50. Ты решил поспать ещё 15 минут. Нужно понять, какое время покажет телефон после прибавления минут.
- Переведи 7:50 в «всего минут от начала суток»: сколько это минут?
- Теперь добавь «посплю ещё 15 минут». Сколько минут получится всего?
- Сколько полных часов помещается в 485 минутах (это будут часы на экране)?
- Сколько минут останется после этих 8 часов (это будут минуты на экране)?
Идея: Сначала переведи текущее время в минуты от начала суток, прибавь нужные минуты, а потом обратно разложи на часы и минуты: сколько полных часов по 60 минут и сколько минут осталось. Если вдруг минут стало больше, чем в одних сутках, выкинь полные сутки (1440 минут), чтобы время снова оказалось в пределах 00:00–23:59. В конце выведи часы и минуты двумя цифрами.
Решить задачу с автопроверкой на Python →
Куда дальше
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается