桃园南路上的红绿灯c++
题目描述
XXX非常讨厌等红绿灯,于是他仔细观察了桃园南路与科技路交叉口的一个红绿灯的周期。
从七点半开始,这个红绿灯的每个周期会按照下面四个阶段变化:
- 先保持 x 分钟的红灯
- 然后保持 y 分钟的黄灯
- 然后保持 z 分钟的绿灯
- 最后保持 y 分钟的黄灯
每次第 4 步的黄灯结束后,又会按照 1~4 的顺序变化。
XXX 想知道第 q 分钟红绿灯的颜色
输入
一行空格隔开的四个整数:x,y,z,q
输出
输出一个字符串,如果第 q 分钟内红绿灯是红色就输出red,是黄色就输出yellow,是绿色就输出green。
样例输入
5 1 4 3
样例输出
red
提示
样例解释
数据规模与约定
对于 100% 的数据 0≤x,y,z≤10,1≤q≤100 且 x,y,z 中至少有一个数大于 0。
- 子任务 1(30 分):y=0 且 z=0。这是一个只有红灯的世界。
- 子任务 2(30 分):y=0,这是一个没有黄灯的世界。
- 子任务 3(40 分):没有特殊限制。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){long long x,y,z,q,x1,y1,z1,z2;cin>>x>>y>>z>>q;x1=x;y1=x+y;z1=x+y+z;z2=x+y+z+y;while(1){if(q>=1&&q<=x1){//在红灯时间范围内cout<<"red";return 0;}if(q>x1&&q<=y1){//在黄灯时间范围内cout<<"yellow";return 0;}if(q>y1&&q<=z1){//在绿灯时间范围内cout<<"green";return 0;}if(q>z1&&q<=z2){//在黄灯时间范围内cout<<"yellow";return 0;}q=q-(x+y+z+y);//q不断减去一个周期}return 0;
}