在此游戏中,有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