牛客刷题-1030 Game

题目

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

Nancy喜欢博弈!
Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作。
一次操作可以将集合中一个数字分解为它的任意两个非1的因数,并加入集合中。
他们想知道,在Johnson和Nancy绝顶聪明的情况下,如果Nancy先手进行操作,最后谁没有办法继续操作了呢?

解析

知识点是博弈论,找到n的所有质因数,然后计数

误区:

  1. 不知道博弈论
  2. 原本思路:列表复制,然后再修改列表,卡在了传给函数的列表该如何转换

代码

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')

运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值