UVA - 10165
题目介绍:
Jack and Jim are playing an interesting stone game. At the beginning of the game there are N pile(s)
of stones. Each pile has Pi (i = 1…N, 1 ≤ Pi ≤ 2 ∗ 109
) stones. They take turns to take away some
of the stones. There are some rules: they must choose one pile at a time. They can take away any
number of stones except 0, of course, not bigger than the number of stones in the pile. One who takes
away the last stone will win the game. Jack is the first to fetch the match, and Jim is the second. Now
Jack asks you for help, to decide while facing some initializations whether he is sure to win or not.
大意:
Nim游戏,全部异或,结果不为0则Yes,否则No。
AC代码:
#include<iostream>
using namespace std;
int main(){
int n;
while(scanf("%d",&n)==1&&n){
int a,ans=0;
for(int i=0;i<n;i++){
scanf("%d",&a);
ans^=a;
}
if(ans)printf("Yes\n");
else printf("No\n");
}
return 0;
}
本文介绍了UVA-10165题目的解决方案,这是一个关于Nim游戏的问题。游戏规则是两个玩家轮流从若干堆石头中拿走一定数量的石头,不能拿0颗且不超过堆内石头数,最后拿走最后一颗石头的人获胜。通过计算所有堆石头数量的异或值,如果结果不为0,则先手玩家(Jack)有必胜策略,否则他无法保证胜利。提供的AC代码通过异或操作快速判断先手玩家的胜负情况。
265

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



