201812-2 小明放学(python)

一、小明放学(续)

1.思路

在这里插入图片描述
根据上面的图可以划分不同的情况,每种灯都有4种情况,具体情况看代码。

2.源代码

r,y,g = map(int,input().split())
time_all = r + y + g
n = int(input())
res = 0
for i in range(n):
    k,t = map(int,input().split())
    if k == 0:
        res += t
    elif k ==1:
        if res%time_all <= t: #灯情况未变,仍然是红灯。
            res += t-res%time_all
        elif t < res%time_all <= t + g: #变成了绿灯。
            continue
        elif t + g < res%time_all <= t + y + g: #变成了黄灯
            res += r + (t + y + g - res%time_all)
        else: #变到了红灯,只不过是t时间前的红灯。
            res += r - (res%time_all - t - g - y)
    elif k == 2:
        if res%time_all <= t: #灯情况未变,仍然是黄灯。
            res += r + t - res%time_all
        elif t < res%time_all <= r + t: #变成了红灯。
            res += r + t - res%time_allc
        elif r + t < res%time_all <= t + r + g:  #变成了绿灯
            continue
        else: #变到了黄灯,只不过是t时间前的黄灯。
            res += r + y -(res%time_all - t - r - g)
    elif k == 3:
        if res%time_all <= t: #灯情况未变,仍然是绿灯。
            continue
        elif t < res%time_all <= t + y: #变成了黄灯。
            res += y + t - res%time_all + r
        elif t + y < res%time_all <= t + y + r: #变成了红灯
            res += r - (res%time_all - t -y )
        else: #变到了绿灯,只不过是t时间前的绿灯。
            continue
print(res)

总结

本题难点是划分各种情况,因为给你的时间是离出发后的时间,所以你得判断当你到达时这个灯是什么颜色。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值