题目
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
Nancy喜欢博弈!
Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作。
一次操作可以将集合中一个数字分解为它的任意两个非1的因数,并加入集合中。
他们想知道,在Johnson和Nancy绝顶聪明的情况下,如果Nancy先手进行操作,最后谁没有办法继续操作了呢?
解析
知识点是博弈论,找到n的所有质因数,然后计数
误区:
- 不知道博弈论
- 原本思路:列表复制,然后再修改列表,卡在了传给函数的列表该如何转换
代码
n = int(input())
def func_1(n):
count = 0
if n <= 1:
return 1
for i in range(2, n + 1):
while n % i == 0:
n /= i
count += 1
return count
count = func_1(n)
if count % 2 == 0:
print('Johnson')
else:
print('Nancy')