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

МКАД

Координата на кольце — остаток полного перемещения при делении на длину дороги.

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

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

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

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

Ключевая идея · Остаток по модулю 109

За t часов перемещение равно v·t. В Python остаток при делении на положительное 109 всегда лежит от 0 до 108, даже при отрицательной скорости.

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

  • Обычное деление / даёт вещественное число.
  • Для отрицательной скорости нельзя заменять // на int(distance / 109): округление будет другим.
  • Отметка 109 совпадает с отметкой 0.

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

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

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

Рекомендуемое решение: Остаток по модулю 109

За t часов перемещение равно v·t. В Python остаток при делении на положительное 109 всегда лежит от 0 до 108, даже при отрицательной скорости.

v = int(input())
t = int(input())
print(v * t % 109)

Время: O(1) арифметических операций. Память: O(1) числовых переменных.

Другой способ: Вычитание полных оборотов

Целочисленное деление // округляет вниз. Если вычесть это количество полных оборотов, оставшаяся координата окажется в диапазоне 0…108 и при движении назад.

v = int(input())
t = int(input())
distance = v * t
turns = distance // 109
print(distance - turns * 109)

Время: O(1) арифметических операций. Память: O(1) числовых переменных.