预测C ++硬币游戏的获胜者

在此游戏中,有X和Y两个玩家。我们的任务是预测如果双方都发挥最佳状态且X开始游戏,谁将赢得比赛。

游戏

在硬币游戏中,有两个堆,分别有N和M个硬币。一名玩家选择游戏中的任何一堆。然后的任务是将筹码分成两半,直到任何一个玩家都无法进一步将筹码分为两半。

让我们举个例子来了解这个问题,

Input: M = 2 , N = 2
Output:X

说明 -X启动游戏并选择M桩(两者相同),然后将桩分为两部分。现在每个将只包含一个硬币,因此Y将保持不变。这将使X获胜。

为了解决这个问题,我们需要看到玩家X获胜的机会。玩家X获胜的情况是任何一堆都将有偶数个硬币。否则,Y将是赢家。

程序展示了我们逻辑的执行

示例

#include <iostream>
using namespace std;
int isXWinner(int M, int N) {
   if (M % 2 == 0 || N % 2 == 0)
   return 1;
   return 0;
}
int main() {
   int M = 1, N = 2;
   cout<<"Game Starts!\n";
   if(isXWinner(M,N))
      cout<<"Player X is the Winner";
   else
      cout<<"Player Y is the Winner";
   return 0;
}

输出结果

Game Starts!
Player X is the Winner