题干: 甲、乙两人在一条长 120 米的直路上来回跑, 甲的速度是 5 米/秒, 乙的速度是 3 米/秒. 若他们同时从同一端出发跑了 15 分钟, 则他们在这段时间内共迎面相遇多少次,总共相遇多少次?
代码模拟:
# 定义参数
track_length = 120 # 跑道长度,单位:米
speed_a = 5 # 甲的速度,单位:米/秒
speed_b = 3 # 乙的速度,单位:米/秒
time_seconds = 15 * 60 # 时间转换为秒
# 初始化变量
position_a = -60 # 甲的初始位置
position_b = -60 # 乙的初始位置(从跑道的另一端开始)
meetings = 0 # 相遇次数
flag_a = 1
flag_b = 1
meetings_count = 0
# 模拟两人跑步过程
for _ in range(time_seconds):
#甲向前跑一步,碰到端点转身
if position_a >= 60:
flag_a = -1
if position_a <= -60:
flag_a = 1
if flag_a == 1:
position_a += speed_a
else:
position_a -= speed_a
#乙向前跑一步,碰到端点转身
if position_b >= 60:
flag_b = -1
if position_b <= -60:
flag_b = 1
if flag_b == 1:
position_b += speed_b
else:
position_b -= speed_b
# 检查是否迎面相遇
# 相遇条件是甲和乙在同一位置,并且甲从后面追上乙
if position_a == position_b and flag_a != flag_b:
meetings += 1
#检测是否相遇
if position_a == position_b:
meetings_count += 1
print(_,position_a,position_b)
# 打印结果
print(f"他们在这段时间内共迎面相遇 {meetings} 次。")
print(f"他们在这段时间内共相遇 {meetings_count} 次。")
数学解释:
【答案】
总共相遇:(5+3)× 15 × 60 = 7200(米)
7200 ÷ (120 × 2)= 30(次)
迎面相遇: 3 × 15 × 60 ÷ 120 = 22.5(次)
5 × 15 × 60 ÷ 120 = 37.5(次)
所以总共迎面相遇23次
【点睛】要注意到迎面相遇和相遇之间的区别,同时要意识到在行程问题中,两人从同一点出发,每一次相遇意味着两人跑过的总距离为两点距离的两倍。迎面相遇意味着相遇时两人的方向是相向而行