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

Часы - 3

Переводим угол в полные секунды и раскладываем их на часы, минуты и секунды.

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

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

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

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

Ключевая идея · Рекомендуемое решение

Decimal предотвращает двоичную погрешность около целой секунды для обычной длины входа. int отбрасывает неполную секунду; divmod выделяет полные единицы времени.

Проверьте перед запуском

  • Нужны полные секунды: округление до ближайшей секунды неверно.
  • Часы не следует брать по модулю 12: тесты включают значения больше 12 часов.
  • Decimal использует конечную точность контекста; для необычно длинного ввода подходит Fraction.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение

Decimal предотвращает двоичную погрешность около целой секунды для обычной длины входа. int отбрасывает неполную секунду; divmod выделяет полные единицы времени.

from decimal import Decimal
angle = Decimal(input())
total = int(angle * 120)
h, remainder = divmod(total, 3600)
m, s = divmod(remainder, 60)
print(h, m, s)

Время: O(d) для чтения d цифр; десятичная арифметика зависит от точности контекста, здесь фиксированной. Память: O(d) для записи и чисел.

Ещё один способ

Рациональная арифметика точно хранит десятичный ввод любой длины. Целая часть произведения на 120 задаёт количество полных секунд.

from fractions import Fraction
angle = Fraction(input())
total = (angle * 120).__floor__()
h = total // 3600
m = total // 60 % 60
s = total % 60
print(h, m, s)

Время: O(d) на чтение d цифр; рациональная арифметика зависит от длины числа. Память: O(d) для записи и чисел.