繁体   English   中英

理解这个谜题的解决方案

[英]Understanding this solution to a puzzle

我在编码比赛中做一道谜题,但我被一个问题困住了。 基本上我不明白有人怎么能达到这个解决方案。 谜题是

爱丽丝和鲍勃玩以下游戏。 他们选择一个数字 N 来玩。 规则如下:

  1. 鲍勃先上场,两名球员交替进行。
  2. 轮到他/她,玩家可以从 N 中减去任何小于 N 的质数(包括 1),这样得到的数就是新的 N。
  3. 轮到他/她不能移动的人输掉游戏。

假设双方都发挥最佳,谁赢得了比赛?

给定的解决方案是

int main() {
  long int T, N;
  for(scanf("%ld", &T); T > 0; T--) {
    scanf("%ld", &N);
    if (N % 4 == 1) {
      printf("ALICE wins\n");
    } else {
      printf("BOB wins\n");
    }
}

这是一种尼姆游戏。 最终面对N = 1的玩家输了。 如果N % 4 != 1 ,Bob 可以取 1、2 或 3 使下一个N ≡ 1 (mod 4) ,让 Alice 处于亏损状态。 否则,如果开始时N ≡ 1 (mod 4) ,Alice 可以反击 Bob 的举动,再次为 Bob 留下一个数字≡ 1 (mod 4)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM