题解
我们将数字分成三类:奇数、不包括2n在内的偶数,以及2n。于是,经过一步操作我们发现三类数字会有如下转化:

我们看到,对于奇数,一次操作后,必然变成一个偶数。且我们会发现这个偶数一定不是2n。
显然这奇数的所有因数都是奇数,令这个奇数为a⋅b且a⋅b−b=2x。则我们会发现(a−1)⋅b=2x,进而必然有a−1=2y且b=2(x−y)。于是与b为奇数矛盾。
对于不是2n的偶数,令这个数为a⋅b⋅c,其中a为偶数,b为奇数,c为任意数。显然有a⋅b⋅c−b为奇数,a⋅b⋅c−a为偶数。
可以看到,如果任何人拿到一个奇数,那么这个人其实没有选择只能将这个数转化为非2的指数的偶数。而恰巧,我们可以注意到对于素数本身一定会导致失败。于是不论是谁,只要拿到了非2的指数的偶数一定会转为奇数。总有一次这个奇数会是一个素数。
所以,如果Alice拿到了非2的指数的偶数,则Alice必胜,否则Bob必胜。
对于2n。因为非2的指数的偶数是必胜状态,因此一定不会向这个方向转化。于是每次都是减去2n−1以得到另一个2的指数。于是取决于指数次幂的奇偶性来判断胜负。
综上,对于Alice我们可以得到下面的图:

代码
Java
Submission #119974985 - Codeforces
Codeforces. Programming competitions and contests, programming community

C++
Submission #119975169 - Codeforces
Codeforces. Programming competitions and contests, programming community
