1069 Nim游戏
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注
有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。
例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。
Input
第1行:一个数N,表示有N堆石子。(1 <= N <= 1000)
第2 - N + 1行:N堆石子的数量。(1 <= A[i] <= 10^9)
Output
如果A获胜输出A,如果B获胜输出B。
Input示例
3
1
1
1
Output示例
A
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,t,ans=0;
cin>>n;
while(n--){
cin>>t;
ans^=t;
}
if(ans==0)
cout<<"B"<<endl;
else
cout<<"A"<<endl;
return 0;
}
本文介绍了一个经典的博弈论问题——Nim游戏。在该游戏中,两名玩家轮流从多堆石子中取走任意数量的石子,直至取完为止。文章提供了一个简洁的C++代码示例,用于判断初始状态下哪位玩家能够取胜。
1825

被折叠的 条评论
为什么被折叠?



