Светофор на кольцевой площади

тема: Моделирование процессов · уровень: базовый

Условие

На кольцевой площади в городе поставили «умный» светофор, но он работает по простому циклу.

В момент времени 0 он загорается красным и горит ровно R секунд, потом зелёным ровно G секунд, потом снова красным R секунд, и так по кругу без пауз.

Петя пришёл на площадь в момент времени T (в секундах) и хочет понять, какой свет горит ровно в этот момент.

Важно: значения времени могут быть больше 32-битного типа (как на олимпиадах), используйте 64-битные целые. В Python это не проблема.

Формат ввода

В одной строке записаны три целых числа R, G, T.

Формат вывода

Выведите одно слово:

Ограничения

Пример

Ввод:

3 2 4

Вывод:

GREEN

Как решать — идея подхода

Приём: Остаток по модулю (периодичность)

Ключевое наблюдение: работа светофора периодична. После R+G секунд состояние повторяется, значит важен не сам T, а его положение внутри текущего цикла.

Приём: берём остаток от деления T на длину периода P = R + G. Остаток x = T % P показывает, сколько секунд прошло с начала «своего» цикла. В каждом цикле первые R секунд горит красный, следующие G секунд — зелёный. Поэтому достаточно сравнить x с R.

План решения:

Мини-сниппет логики:

Сложность: O(1) по времени и O(1) по памяти.

Частая ошибка: перепутать границу в момент переключения. В момент T = R красный уже закончился и начинается зелёный, поэтому условие строгое: x < R, а не x <= R.

Разберись руками

Светофор повторяет цикл: сначала 3 секунды красный, потом 2 секунды зелёный, и так снова. Петя смотрит на него ровно в момент T = 4 секунды и хочет понять, какой цвет горит в эту секунду.

Идея: Сначала находишь длину одного полного повторяющегося цикла. Потом выкидываешь все целые циклы из момента времени и смотришь только на то, что осталось внутри одного цикла. По этому положению внутри цикла решаешь, попал ли момент в красную часть или в зелёную.

Решить задачу с автопроверкой на Python →

Куда дальше