Python程序:在一个圆形管中找出球碰撞的次数

Python程序:在一个圆形管中找出球碰撞的次数

设有n个球在一个圆形管中。这个管子长100米,最初,管中的每个球距离一个我们称为起点的点i米。现在,球以不同的方向按圆形顺序在管子内行驶。球在管子里行进0.1米/秒。当两个球在一个点相遇时,发生碰撞并改变它们的运动方向。如果这个过程进行了很长的时间,比如说10^9 + 6秒,我们必须找出球碰撞的次数。球的起始距离从起点给出输入。

因此,如果输入为input_array = [0, 10],那么输出将是400000

这里有两个球,它们的起始线距离由我们的输入给出。如果它们的方向相同,它们将永远不会碰撞。但是,如果它们的方向不同,它们将在碰撞时间内相遇。一个球会精确地和另一个球在400000次碰撞中相遇。

为了解决这个问题,我们将按照以下步骤进行 −

  • 对输入数组进行排序
  • size := input_array的大小
  • lap_count := (10^5)*2
  • output := 2 * lap_count * (size / 2的地板函数) * (size – size / 2的地板函数)的值
  • stop := 0
  • 对于在范围0到size – 1的i,做以下操作
  • 如果stop不等于1,则如果input_array [i] +1等于input_array [i + 1],则
    • 输出:output + = 2
    • stop := 1
  • 否则,
    • stop := 0

    • 否则,

  • stop := 0

    • 返回output

更多Python相关文章,请阅读:Python 教程

示例

让我们看看以下实现,以便更好地理解 −

def solve(input_array):
   input_array.sort()
   size = len(input_array)
   lap_count = (10**5)*2
   output = 2*lap_count*(size//2)*(size - size//2)
   stop = 0
   for i in range(size - 1):
      if stop != 1:
         if input_array[i] + 1 == input_array[i+1]:
            output+=2
            stop = 1
         else:
            stop = 0
      else:
         stop = 0
   return output
print(solve([0, 10]))

输入

[0, 10]

输出

400000

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程