Разность времен
Переводим оба момента времени в секунды от начала суток и вычитаем.
Как к ней подойти
Увидите, как целочисленные операции и вычисления с дробями помогают обойтись без лишних шагов.
Операции // и % помогают разделить число на целую часть и остаток. Для дробных вычислений следите за точностью и порядком действий: одно и то же число может требовать разного способа обработки.
В часе 3600 секунд, в минуте 60. После перевода переносы между разрядами не требуют отдельных проверок.
Проверьте перед запуском
- Не нужно брать модуль разности: второй момент по условию не раньше первого.
- Оба момента принадлежат одним суткам.
- Один час содержит 3600 секунд, а не 60.
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Общая единица измерения
В часе 3600 секунд, в минуте 60. После перевода переносы между разрядами не требуют отдельных проверок.
h1 = int(input())
m1 = int(input())
s1 = int(input())
h2 = int(input())
m2 = int(input())
s2 = int(input())
start = h1 * 3600 + m1 * 60 + s1
end = h2 * 3600 + m2 * 60 + s2
print(end - start)
Время: O(1) арифметических операций. Память: O(1) числовых переменных.
Другой способ: Вычитание с заимствованием
Если секунд второго момента недостаточно для вычитания, заимствуем минуту; при отрицательном числе минут заимствуем час. Затем переводим полученный интервал в секунды.
h1 = int(input())
m1 = int(input())
s1 = int(input())
h2 = int(input())
m2 = int(input())
s2 = int(input())
seconds = s2 - s1
minutes = m2 - m1
hours = h2 - h1
if seconds < 0:
seconds += 60
minutes -= 1
if minutes < 0:
minutes += 60
hours -= 1
print(hours * 3600 + minutes * 60 + seconds)
Время: O(1) арифметических операций. Память: O(1) числовых переменных.