JAVA CCF-201812-2 小明放学
欢迎访问我的 CCF认证解题目录 题目描述 思路过程 题目给的灯都是小明出发时的状况,所以对于每个灯我们还得自己计算到达时的状态。 新建一个sum变量来累计时间,由于极端情况下int会数据溢出,所以得采用Long类型。 新建一个变量x,存储红绿灯一轮所需的时间。 开始读入数据,如果是路,则直接 sum += time; 这一步配合下面的图进行观看容易理解一些。如果不是路,我们计算出这一轮剩余的时间(脑子里有一个循环的红绿灯时间轴,以绿灯为起点,红灯为终点,无限循环),然后加上sum再对x取余,即可得到这一轮已经经过的时间,最后进行判断,如果此时不是绿灯,则加上所需的时间即可。 红绿灯的时间轴 x <-------------------------0 | 红灯 | 黄灯 | 绿灯 | 如果没看懂欢迎评论,看到后会马上回复。 代码 import java . util . Scanner ; public class Main { public static void main ( String [ ] args ) { Scanner in = new Scanner ( System . in ) ; int r = in . nextInt ( ) , y = in . nextInt ( ) , g = in . nextInt ( ) , n = in . nextInt