题解 | #Game#
Game
https://ac.nowcoder.com/acm/problem/201610
题目描述
Nancy喜欢博弈! Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作。 一次操作可以将集合中一个数字分解为它的任意两个非1的因数,并加入集合中。 他们想知道,在Johnson和Nancy绝顶聪明的情况下,如果Nancy先手进行操作,最后谁没有办法继续操作了呢?
输入描述:
第一行:一个整数n。 数据满足:2≤n≤95718。
输出描述:
共一行:一个字符串,表示最后谁(Johnson或者Nancy)无法进行操作。
示例1
输入
4
输出
Johnson
思路
当n≠1时,n的任意非1因数可以由其若干个质因数乘积表示。无论过程怎么样,最终n将被分解为唯一的若干个质因数,且
。如12分解为3,4,再分解为3,2,2,也可以分解为6,2,再分解为3,2,2。
实现如下:
#include<cstdio>
int main()
{
int n,i=0;
scanf("%d",&n);
for(int j=2;j<=n;++j)while(n%j==0)n/=j,++i;
printf("%s",i%2?"Nancy":"Johnson");
}