Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование. Решите 7 задачу, пж.

Анна Лобанова Знаток (290), открыт 3 недели назад
Задача 7
Цикл работы светофора такой: красный (горит a секунд), красный с жёлтым (b секунд), зелёный (c секунд), жёлтый (b секунд). Затем последовательность повторяется.
Только что включился красный. Нужно посчитать, сколько времени горит каждый свет, если известно, что светофор работал N секунд.
Обратите внимание, что красный и жёлтый горят дважды за цикл: один раз вместе с другим цветом, второй раз отдельно. Время, когда на светофоре горят два сигнала — красный и жёлтый, — «засчитывается» обоим сигналам.
Даны числа a, b, c, N. Выведи, сколько всего секунд горел каждый сигнал светофора за N секунд его работы.

Ввод Вывод
20 60
5 20
25 50
120

Примечание: полный цикл светофора длится 20+5+25+5=55 секунд. Светофор отработал два полных цикла, а потом ещё 120-55х2=10 секунд горел красный. В каждом цикле красный горит 20+5=25 секунд, жёлтый горит 10 секунд, а зелёный — 25 секунд.
Итого, красный горел 25х2+10=60 секунд, жёлтый горел 10х2=20 секунд, а зелёный горел 25х2=50 секунд.
3 ответа
Jurijus Zaksas Искусственный Интеллект (470174) 3 недели назад
Ну примерно так:

 var 
a, b, c, N, k: integer;
begin
Readln(a,b,c,N);
k:=N div (a+b+b+c);
Writeln((a+b)*k + N mod (a+b+b+c));
Writeln((b+b)*k);
Writeln(c*k);
end.
ПапаВысший разум (153543) 3 недели назад
А шо, таки на Паскале надо было?
Папа Высший разум (153543) 3 недели назад
На Питоне, проверяй:
 a, b, c, n = map(int, map(input, ('',) * 4))
t = a + 2 * b + c
k, r = divmod(n, t)
x = k * (a + b) + min(r, a + b)
y = k * 2 * b + min(max(r - a, 0), b) + min(max(r - t + b, 0), b)
z = k * c + min(max(r - a - b, 0), c)

print(x, y, z)
Похожие вопросы