在Python中计算锦标赛中比赛场次的程序

在Python中计算锦标赛中比赛场次的程序

假设有一个数字n。那么在一个具有一些规则的锦标赛中有n个团队 −

  • 如果团队数量目前为偶数,则每个团队都会与另一个团队合并。总共会进行(n/2)场比赛,其中(n/2)支获胜的团队将晋级下一轮。

  • 如果团队数量是奇数,则有一个团队会随机进入比赛,而其余团队会合并。所以一共会进行(n-1)/2场比赛,有(n-1)/2+1个团队作为获胜者进入下一轮。

我们必须找到比赛的总场次,以便能得到最终的获胜者。

因此,如果输入为n = 10,则输出为9,因为

  • 最初有5-5的划分,其中5个人资格得到认可。

  • 现在将一支队伍放入比赛,并将2-2支队伍分开,因此将有3个人资格得到认可。

  • 现在将一支队伍放入比赛,并将1-1支队伍分开,因此将有2个人资格得到认可。

  • 将1-1进行分组,获胜者将资格得到认可。

要解决此问题,我们将采取以下步骤 −

  • ans := 0

  • 当n不等于1时,执行以下操作

    • f := n/2的向下取整

    • remainder := n mod 2

    • ans := ans + f

    • n := f + remainder

  • 返回ans

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

示例(Python)

让我们看一下以下实现,以获得更好的理解:

def solve(n):
   ans = 0
   while n != 1:
      f = n//2
      remainder = n % 2
      ans += f
      n = f + remainder

   return ans

n = 10
print(solve(n))

输入

10

输出

9

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程