TheNumberGameDivOne
作者:翁文涛
关键词:博弈,打表,数学归纳法
题目简述
现在John和Brus在玩一个有趣的游戏。一开始他们有一个正整数,他们会轮流对这个数进行操作。每一回合,当前操作的人可以选择一个整数,满足,且,然后把变成,不能操作的人算输。现在John先手,给定,问最终谁会取得胜利。
数据范围
题解
设表示当数为时,先手的胜利情况。若,表示先手必胜,若,表示后手必胜。那么有转移: 直接这样做显然是会超时的,但我们可以通过这个算法打表找规律,下面是一个对应的的表。 部分g[n]的值
我们可以很轻易的发现下面的规律: 当且仅当。接下来我们可以用数学归纳法进行证明。
首先,当时,,命题成立。 接下来,设当且的,且对于任意,命题成立,对分类讨论,有:
- 是质数,命题显然成立。
- 为奇数且不是质数。否则,设,,易得均为奇数,且。因为为奇数,所以为偶数,且不为,根据题设,有恒为,所以。
- 为偶数且。那么设,必为奇数,根据题设,有,所以。
- 为偶数且。那么,且为奇数,根据题设,,所以。
- 为偶数且且。那么的因子为,,显然为奇数,当时,,因为为偶数,,当时,为不是的幂的偶数,此时,根据题设,有恒为,所以。
综上,对于任意,命题成立。 得证。
所以,最后的算法是,判断是否为奇数或是,是则返回Brus必胜,否则John必胜。