在Python中找到划艇选手减少游戏的赢家

在Python中找到划艇选手减少游戏的赢家

假设我们有一个高度数组。有n个不同高度的塔。Amal和Bimal在玩游戏。游戏规则如下:

  • Amal始终先行动。

  • 在每次行动期间,当前玩家选择高度为X的塔并将其减少到Y [1 <= Y

  • 没有行动的人将输掉比赛。

我们要找到获胜者的名字。

因此,如果输入如height = [3,1,2],则输出将为Bimal,因为初始高度为{3,1,2}。如果Amal将塔2的高度降低到1,Bimal可以将3减1,但Amal无法行动,因此Bimal获胜。

为了解决这个问题,我们将遵循以下步骤:

  • 定义一个函数util(),它将采取a,n
  • 输出ans := 0
  • 对于范围为0到n – 1的i,执行以下操作:
    • 输出ans := ans XOR a[i]
  • 返回ans
  • 从主方法做以下操作
  • 输出n := height的大小
  • 输出b :=一个大小为n的数组,并填充为0
  • 对于范围为0到n – 1的i,执行以下操作:
    • 如果height[i]与1相同,则
      • b[i] := 0
    • 否则
      • b[i] := 0
      • j := 2
      • root :=高度的平方根的底数
      • 当height[i]不等于1且j <= root时,执行以下操作:
      • 如果height[i] mod j等于0,则
        • 当height[i] mod j等于0时,请执行以下操作:
        • b[i] := b[i] + 1
        • height[i] :=高度[i]的底数
      • j := j + 1
      • 如果height[i]不等于1,则
      • b[i] := b[i] + 1
  • 输出ans := util(b,n)
  • 如果ans与0不同,则
    • 返回“Amal”
  • 否则,
    • 返回“Bimal”

示例

让我们看看以下实现以更好的理解-

def util(a,n):
   ans = 0
   for i in range(n):
      ans = ans^a[i]

   return ans

def solve(height):
   n = len(height)
   b = [0 for i in range(n)]

   for i in range(n):
      if(height[i] == 1):
         b[i] = 0
      else:
         b[i] = 0
         j = 2

         root = int(pow(height[i],0.5))
         while(height[i] != 1 and j<=root):
            if(height[i]%j == 0):
               while(height[i]%j == 0):
                  b[i] += 1
                  height[i] = height[i]//j

            j += 1

         if(height[i] != 1):
            b[i] += 1

   ans = util(b, n)

   if(ans != 0):
      return "Amal"
   else:
      return "Bimal"

height = [3,1,2]
print(solve(height))

输入

[3,1,2]

输出

Bimal

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程