TheNumberGameDivOne

作者:翁文涛

关键词:博弈,打表,数学归纳法

题目简述

现在John和Brus在玩一个有趣的游戏。一开始他们有一个正整数,他们会轮流对这个数进行操作。每一回合,当前操作的人可以选择一个整数,满足,且,然后把变成,不能操作的人算输。现在John先手,给定,问最终谁会取得胜利。

数据范围

题解

表示当数为时,先手的胜利情况。若,表示先手必胜,若,表示后手必胜。那么有转移: 直接这样做显然是会超时的,但我们可以通过这个算法打表找规律,下面是一个对应的的表。 部分g[n]的值

我们可以很轻易的发现下面的规律: 当且仅当。接下来我们可以用数学归纳法进行证明。

首先,当时,,命题成立。 接下来,设当且的,且对于任意,命题成立,对分类讨论,有:

  1. 是质数,命题显然成立。
  2. 为奇数且不是质数。否则,设,易得均为奇数,且。因为为奇数,所以为偶数,且不为,根据题设,有恒为,所以
  3. 为偶数且。那么设必为奇数,根据题设,有,所以
  4. 为偶数且。那么,且为奇数,根据题设,,所以
  5. 为偶数且。那么的因子为,显然为奇数,当时,,因为为偶数,,当时,为不是的幂的偶数,此时,根据题设,有恒为,所以

综上,对于任意,命题成立。 得证。

所以,最后的算法是,判断是否为奇数或是,是则返回Brus必胜,否则John必胜。

results matching ""

    No results matching ""