因子游戏题解
结论:奇数时后手必胜,偶数时,如果是2的奇数次幂,后手必胜,否则先手必胜。
这个结论可以用决策树处理出前100个数的答案然后发现规律。
证明的话:
如果是奇数,当这个奇数是质数时,后手直接赢;
否则这个奇数就是若干个奇数的积。
此时无论先手如何变化,都会将奇数变成偶数。
后手只需要和先手减去相同的数即可。
如果是偶数,首先把因子2提出来,偶数就是若干个2和若干个奇数的乘积。
当这些奇数只有1时,每次变化相当于保留一部分2,将剩下的部分变成一个奇质数或者1,因为2的次幂减一都是质数或1,如果先手变化成质数,后手可以反将剩下的2也变成1个奇质数或者1,先手就陷入了奇数的必败态,显然先手不会这么做。
先手的做法应该是,将一个2变成1,这样后手也会面对一个2的次幂的情况。
后手也应当采取相同的策略。
因此如果x是2的奇数次幂,后手胜出,偶数次幂先手胜出。
最后再来看若干个2且奇数部分不为1的情况。
先手直接将若干个2变成奇质数或者1,后手面对奇数,陷入必败态。