通过添加数组中元素的成对差异来找到获胜者,直到在Python中可能
假设我们有一个正整数数组A,元素是唯一的,现在,两个玩家P和Q正在玩游戏。在每一步中,任何一个玩家从数组中选择两个数字a和b,如果|a–b|之后,播放器将此数字添加到数组中,则该数组不在数组中。当玩家无法采取行动时输掉比赛。如果玩家P总是开始游戏,我们必须找到游戏的赢家。
因此,如果输入类似于A=[8,9,10],则输出将为P。
为了解决这个问题,我们将遵循以下步骤-
n:=arr的大小
g:=arr[0],max_val:=arr[0]
对于1到n范围内的i,执行
g:=gcd(g,arr[i])
max_val:=max_val,arr[i]的最大值
总计:=(max_val/g)-n
如果总数是奇数,则
返回“P”
返回“Q”
示例
让我们看下面的实现以更好地理解-
from math import gcd def who_is_the_winner(arr) : n = len(arr) g = arr[0] max_val = arr[0] for i in range(1, n) : g = gcd(g, arr[i]) max_val = max(max_val, arr[i]) total = (max_val / g) - n if (total % 2 == 1) : return 'P' return 'Q' arr = [8,9,10] print(who_is_the_winner(arr))
输入值
[8,9,10]
输出结果
P