在 Python 中查找收集等距物品所覆盖的距离
假设要组织一场比赛。在道路上放置不同的石头。比赛起点有一个桶,距离第一块石头 6 个单位。其他石头彼此相隔 4 个单位,并依次排成一条直线。现在,参赛者从桶开始,然后收集最近的石头,返回并将石头放入桶中,然后再次跑出去收集下一个最近的石头,跑回来,并将其放入桶中。这个过程将持续到所有石头都被放入桶中。如果石头数量为 n,那么我们必须找到参赛者需要覆盖的总距离。
因此,如果输入像 n = 5,则输出将为 140,因为 2*6 + 2(6 + 4) + 2(6 + 4 + 4) + 2(6 + 4 + 4 + 4) + 2(6 + 4 + 4 + 4 + 4) = 140
为了解决这个问题,我们必须解决以下方程式:
对于石头 1,我们必须覆盖 (6+6) = 2*6 的距离
对于石头 2,我们必须覆盖 ((6+4)+(6+4)) = 2*(6+4) 的距离
对于石头 3,我们必须覆盖 ((6+4+4)+(6+4+4)) = 2*(6+4+4) 的距离
对于石头 n,我们必须覆盖 ((6+4*(n-1))+(6+4*(n-1))) = 2*(6+4*(n-1)) 的距离
对于所有石头,我们必须覆盖:
D = 2*6 + 2*(6+4) + 2*(6+4+4) + … + 2*(6+4*(n-1))
D = 2*[6 + (6+4) + (6+2*4) + … + (6+(n-1)*4)]
D = 2*[6n + 4(1 + 2 + … + (n-1))]
D = 2*[6n + 4(n*(n-1)/2)]
D = 2*[6n + 2(n*(n-1))]
示例
让我们看看以下实现以获得更好的理解:
def find_distance(n): return 2*(6*n + 2*((n-1)*n)) n = 5 print(find_distance(n))
输入
5
输出
140
广告