题目描述
题目描述
33DAI 非常讨厌等红绿灯,于是他仔细观察了桃园南路与科技路交叉口的一个红绿灯的周期。
从七点半开始,这个红绿灯的每个周期会按照下面四个阶段变化:
- 先保持 xx 分钟的红灯
- 然后保持 yy 分钟的黄灯
- 然后保持 zz 分钟的绿灯
- 最后保持 yy 分钟的黄灯
每次第 4 步的黄灯结束后,又会按照 1~4 的顺序变化。
33DAI 想知道第 qq 分钟红绿灯的颜色
输入格式
一行空格隔开的四个整数:x,y,z,qx,y,z,q
输出格式
输出一个字符串,如果第 qq 分钟内红绿灯是红色就输出 red
,是黄色就输出 yellow
,是绿色就输出 green
。
输入1:
5 1 4 3
输出1:
red
输入2:
5 1 4 6
输出2:
yellow
输入3:
5 1 4 7
输出3:
green
输入4:
5 1 4 11
输出4:
yellow
输入5:
5 1 4 15
输出5:
red
样例解释
数据规模与约定
对于 100%100% 的数据 0≤x,y,z≤100≤x,y,z≤10,1≤q≤1001≤q≤100 且 x,y,zx,y,z 中至少有一个数大于 00。
- 子任务 1(30 分):y=0y=0 且 z=0z=0。这是一个只有红灯的世界。
- 子任务 2(30 分):y=0y=0,这是一个没有黄灯的世界。
- 子任务 3(40 分):没有特殊限制。
#include <bits/stdc++.h> using namespace std; int n, i; int main() { int x,y,z,q; cin>>x>>y>>z>>q; int cnt1=0,cnt2=0; q=q%(x+y+z+y); if(q==0){ if(y!=0)cout<<"yellow"; else if(z!=0)cout<<"green"; else cout<<"red"; return 0; } for(int i=1;;i++){ if(i%4==0)cnt1+=y; else if(i%3==0)cnt1+=z; else if(i%2==0)cnt1+=y; else cnt1+=x; if(cnt1>=q){ cnt2=i; break; } } if(cnt2%4==0)cout<<"yellow"; else if(cnt2%3==0)cout<<"green"; else if(cnt2%2==0)cout<<"yellow"; else cout<<"red"; return 0; }