Problem F: 985的红绿灯难题
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 207 Solved: 128
Submit Status Web Board
Description
已知红、绿、黄灯各持续r、g、y秒,985发现此时灯刚刚变绿,他想知道x秒后灯是什么颜色。
Input
第一行输入一个整数t,代表有t组测试数据。
每组数据输入四个整数x,g,y,r。
注:1 <= t <= 30,1 <= x,g,r,y <= 1e9。
Output
若x秒后变成红色输出R,变成绿色输出G,反之输出Y。
Sample Input
35 5 2 87 5 2 816 5 2 8
Sample Output
YRG
HINT
红绿灯顺序:绿->黄->红->绿
吐槽:雨神题目表述不清楚啊!x秒后变成红色,可是不是那一秒啊!是在灯亮的一段时间内就好。
数学题,循环。题目说此刻灯刚刚变绿,就告诉了时间。
#include<cstdio>
#include<cstring>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
#define CLR(a,b) memset(a,b,sizeof(a))
int main()
{
int u;
scanf("%d",&u);
while(u--)
{
long long x,a,b,c; //为什么郑轻不可以用__int64!!!后果自己想象
scanf("%lld %lld %lld %lld",&x,&a,&b,&c);
x++;
x=x%(a+b+c);
if(x>=1&x<=a)
printf("G\n");
else if(x>(a+b)&&x<=(a+b+c))
printf("R\n");
else
printf("Y\n");
}
return 0;
}