Мини-урок · перед практикой

Разность времен

Переводим оба момента времени в секунды от начала суток и вычитаем.

Как к ней подойти

Увидите, как целочисленные операции и вычисления с дробями помогают обойтись без лишних шагов.

Коротко о теме

Операции // и % помогают разделить число на целую часть и остаток. Для дробных вычислений следите за точностью и порядком действий: одно и то же число может требовать разного способа обработки.

Ключевая идея · Общая единица измерения

В часе 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) числовых переменных.