进行一次游戏,胜利方式如下:输入一个数字N代表桌子上一共有N枚金币,有AB两位玩家参与游戏,两位玩家每次都可以从桌上轮流拿走1枚或2枚金币,从A开始,获得最后一枚金币的玩家为胜利者。根据输入的N的数量,输出拥有必胜策略的玩家名字,以及需要进行的轮数K。
样例输入:4
样例输出:A 3
样例输入:102
样例输出:B 68
进行一次游戏,胜利方式如下:输入一个数字N代表桌子上一共有N枚金币,有AB两位玩家参与游戏,两位玩家每次都可以从桌上轮流拿走1枚或2枚金币,从A开始,获得最后一枚金币的玩家为胜利者。根据输入的N的数量,输出拥有必胜策略的玩家名字,以及需要进行的轮数K。
样例输入:4
样例输出:A 3
样例输入:102
样例输出:B 68
必胜策略是当金币除以3余数为1时拿一个,余数为2时拿两个,让对方拿时金币正好是3的倍数.
这样初始金币正好是3的倍数时 B 必胜, 不是3的倍数时 A 必胜
你题目的解答代码如下:
#include<iostream>
using namespace std;
int main()
{
int n,i=0,p=1,t;
cin >> n;
while (n>0)
{
p = !p;
if (n % 3 == 1)
n -= 1;
else
n -= 2;
i++;
}
if (p==0)
cout << "A" << " " << i << endl;
else
cout << "B" << " " << i << endl;
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!