首页 > Game
头像 Tang7O
发表于 2020-01-18 22:17:26
每次操作可以将集合中的一个数字分解为它的任意两个非1的因数, 集合中的数字个数+1。因为 质因数 是无法再被分解的,所以最后集合中的数全为 n 的质因数。因此只需要看题目给定的 n 有多少个质因数。假设 n 有 p 个质因数,那么这场游戏将进行 p-1 次操作(每次操作后集合中的数字个数+1),如果 展开全文
头像 RandolphJ
发表于 2020-01-31 22:15:33
因为质因数是无法再被分解的,所以最后集合中的数全为n的质因数,先考虑把n质因数分解。不难发现,每次分解为哪2个数并不重要,只不过是把集合中的数字个数加1,那么质因数个数的奇偶很可能决定了谁最后无法操作。 假设 n 有 p 个质因数,那么这场游戏将进行 p-1 次操作(每次操作后集合中的数字个数+1 展开全文
头像 精神病科黄主任
发表于 2020-05-19 00:43:43
题目描述Nancy喜欢博弈!Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作。一次操作可以将集合中一个数字分解为它的任意两个非1的因数,并加入集合中。他们想知道,在Johnson和Nancy绝顶聪明的情况下,如果Nancy先手进行操作,最后谁没有办法继续操作 展开全文
头像 fyx哥哥
发表于 2022-07-31 16:31:50
sg函数暴力求解 #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; int dp[N]; int sg(int x){ if(~dp[x])return dp[x]; unordered 展开全文
头像 昨晚梦见发财了
发表于 2020-05-16 17:33:40
只需要算出n可以分解多少次即可。 就比如说12可以分一次分为3 4,4又可以分为2 2. 当次数为偶数时输出Nancy 奇数为Johnson import java.util.*; import java.math.*; import java.i 展开全文
头像 Bernard5
发表于 2020-05-12 21:14:35
最后集合中的数全部都是质因数。 假设 n 有 p 个质因数,那么这场游戏将进行 p-1 次操作(每次操作后集合中的数字个数+1),如果 p-1 为奇数那么后手便无法再进行操作,如果 p-1 为偶数则先手再无法进行操作。 特判n为1的情况。 #include <bits/stdc++.h> 展开全文
头像 人工2301B刘永琪
发表于 2025-05-13 16:39:51
Nancy喜欢博奕! Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作。 一次操作可以将集合中一个数字分解为它的任意两个非1的因数,并加入集合中,当谁无法执行此步操作时,对方获胜。 他们想知道,在Johnson和Nancy绝顶聪明的情况下,如果Nancy先手 展开全文
头像 ruoye123456
发表于 2024-04-01 20:56:16
显然本题能操作的次数与n的质因子个数有关 当一个数被分解成质数后便不能再次分解 所以在质因数分解的函数中添加判断使其值不能被除到1即可 记录可操作次数,奇数答案为J,偶数为N #include<bits/stdc++.h> using namespace std; int divi 展开全文
头像 LoGic123456789
发表于 2020-05-12 22:08:14
首先分析何时不能尽行操作:当该集合中只剩下质数时操作结束。因此我们只需要计算分解质因数的次数就OK了。本体比较菜,所以搞了一个欧拉筛来计算质数,显然有点大材小用。 #include <bits/stdc++.h> using namespace std; const int N = 3 展开全文
头像 T43
发表于 2023-08-31 21:50:46
题目描述 Nancy喜欢博弈! Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作。 一次操作可以将集合中一个数字分解为它的任意两个非1的因数,并加入集合中。 他们想知道,在Johnson和Nancy绝顶聪明的情况下,如果Nancy先手进行操作,最后谁没有办法 展开全文