您的位置:首页 > 其它

HDU 5591 ZYB's Game

2015-12-05 23:30 316 查看

题目大意

两个人玩游戏,都已知数X,在[1,N]中猜中X则算输。若没猜中,则缩小范围。

假设两人都足够聪明,求对于任意的X属于[1,N],能使得后手赢的X有多少个。

分析

类似两堆石子,每堆石子若干个,两个人可在任意一堆石子中捡取若干个,最后一个捡完石子的人胜利。

若要使得后手能够胜利,则必然是先手面临两堆石子数量相等的情况。

若两堆石子数量相等,则后手可捡取先手所捡取得同样数量的石子。从而立于不败之地。
若两堆石子数量不等,则先手可捡取一定若干石子,使得两堆石子数量相等。


因此,答案要么是1,要么是0。只有当N是奇数的时候,才会出现两边数的个数相等的情况,从而 ans = n & 1 ? 1 : 0;

代码

#include <iostream>

using namespace std;

int main()
{
int t , n;
cin >> t;
while(t--)
{
cin >> n;
cout << (n & 1 ? 1 : 0) << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: