三角形路径跑步总距离下,单条边跑过次数的计算及代码实现
问题解决思路与代码实现
核心逻辑拆解
要算出跑过某条边的次数,分两步就行:
- 完整圈数的次数:先算三角形周长(30+25+35=90米),每跑一圈,每条边都会被完整跑1次,所以完整圈数就是总距离除以周长的整数部分,这部分每条边的次数等于圈数。
- 剩余距离的次数:总距离减去完整圈数的总长度后,剩下的距离会沿着三角形的边依次跑,只要剩余距离够跑完某条边,这条边的次数就加1,直到剩余距离不够跑下一条边为止。
举例计算(560米跑过30米边的次数)
- 周长=90米,完整圈数=560//90=6圈,这部分30米边跑了6次。
- 剩余距离=560%90=20米,20米不够跑完30米的边,所以剩余部分不会增加30米边的次数。
- 总次数=6+0=6次。
如果总距离是125米(1圈+35米):
- 完整圈数1次,30米边先算1次。
- 剩余35米先跑30米(剩余5米),30米边次数再加1,总次数变成2次;剩下5米不够跑25米的边,其他边次数不变。
补全后的Python代码
ran = int(input("Dist. ran: ")) a = 30 b = 25 c = 35 perimeter = a + b + c # 初始化三条边的次数 count_a = count_b = count_c = 0 # 先算完整圈带来的次数 full_cycles = ran // perimeter count_a += full_cycles count_b += full_cycles count_c += full_cycles # 处理剩余距离 remaining = ran % perimeter current = remaining # 按跑步顺序检查剩余距离(假设从30米边起点开始跑) if current >= a: count_a += 1 current -= a if current >= b: count_b += 1 current -= b if current >= c: count_c += 1 current -= c # 输出结果 print(f"30米边跑过次数: {count_a}") print(f"25米边跑过次数: {count_b}") print(f"35米边跑过次数: {count_c}")
代码说明
- 圈数部分直接用整除计算,简单高效。
- 剩余距离的处理是按边的顺序依次判断,确保每段剩余距离都被正确分配到对应的边。
- 如果跑步的起始边不是30米,只需调整剩余距离检查的顺序(比如从25米开始就改成先检查b,再c,再a)。
内容的提问来源于stack exchange,提问作者Aryan
相关产品推荐
相关产品推荐

