最后集合中的数全部都是质因数。
假设 n 有 p 个质因数,那么这场游戏将进行 p-1 次操作(每次操作后集合中的数字个数+1),如果 p-1 为奇数那么后手便无法再进行操作,如果 p-1 为偶数则先手再无法进行操作。
特判n为1的情况。
#include <bits/stdc++.h> using namespace std; int main() { int n; scanf("%d", &n); if (n == 1) printf("Nancy\n"); else { int num = 0; for (int i = 2; i <= n; i++) while (n % i == 0) n /= i, num++; printf(num & 1 ? "Nancy\n" : "Johnson\n"); } return 0; }