N,M = map(int,input().split())
Alist = list(map(int,input().split()))
R = list(map(int,input().split())) # 红灯的时间
G = list(map(int,input().split())) # 绿灯时间
Alist.insert(0,M)
timeList = []
# 计算到了路口之后用的总时间
s = 0 # 路口红绿灯之和
timeUsedTotal = 0 # 到达每个路口花费的总时间
timeUsed = Alist[0]
for i in range(N):
timeUsedTotal = timeUsedTotal + timeUsed
# 判断,当前是绿灯还是红灯
# 如果是绿灯直接通过
s = R[i] + G[i]
timeUsed = timeUsedTotal % s
if G[i] < timeUsed:
timeUsedTotal = timeUsedTotal + (s - timeUsed)
if i != N-1:
timeUsed = Alist[i+1] # 统计当前路口到下一个路口花费的时间
timeList.append(timeUsedTotal)
for elem in timeList:
print(elem)
结果:
如果觉得答案对你有帮助,请点击下采纳,谢谢~
N, M =5,3
A = [2, 4, 3, 2]
R = [3, 4, 3, 4, 3]
G = [2, 3, 2, 3, 1]
X = 0
A.insert(0, M)
for i,v in enumerate(R):
X = X +A[i]
tmpX = X % (v + G[i])
if tmpX<= G[i]:
print(f'等第{i+1}个红绿灯:0')
elif tmpX > G[i] <= v + G[i]:
print(f"等第{i+1}个红绿灯:{v+G[i]-tmpX}")
X += v+G[i]-tmpX
print(f"刚过红绿灯总时间:{X}")