ZYB's Game
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 297 Accepted Submission(s): 249
Problem Description
ZYB
played a game named
NumberBomb
with his classmates in hiking:a host keeps a number in
[1,N]
in mind,then
players guess a number in turns,the player who exactly guesses X loses,or the host will tell all the players that
the number now is bigger or smaller than X .After that,the range players can guess will decrease.The range is [1,N] at first,each player should guess in the legal range.
Now if only two players are play the game,and both of two players know the X ,if two persons all use the best strategy,and the first player guesses first.You are asked to find the number of X that the second player
will win when X is in [1,N] .
players guess a number in turns,the player who exactly guesses X loses,or the host will tell all the players that
the number now is bigger or smaller than X .After that,the range players can guess will decrease.The range is [1,N] at first,each player should guess in the legal range.
Now if only two players are play the game,and both of two players know the X ,if two persons all use the best strategy,and the first player guesses first.You are asked to find the number of X that the second player
will win when X is in [1,N] .
Input
In the first line there is the number of testcases
T
.
For each teatcase:
the first line there is one number N .
1≤T≤100000 , 1≤N≤10000000
For each teatcase:
the first line there is one number N .
1≤T≤100000 , 1≤N≤10000000
Output
For each testcase,print the ans.
Sample Input
1 3
Sample Output
1
题意: ZYB 在远足中,和同学们玩了一个“数字炸弹”游戏:由主持人心里想一个在[1,N]中的数字XX,然后玩家们轮流猜一个数字,如果一个玩家恰好猜中XX则算负,否则主持人将告诉全场的人当前的数和X比是偏大还是偏小,然后猜测的范就会相应减小,一开始的范围是[1,N][1,N].每个玩家只能在合法的范围中猜测.现在假设只有两个人在玩这个游戏,并且两个人都已经知道了最后的XX,若两个人都采取最优策略.求X \in [1,N]X∈[1,N]中是后手胜利的XX数量.
思路:类比于左右两堆石子,每次可以在一堆里取任意多,取完的人胜利.当左右两堆石子相同时,我们可以简单的 构造后手胜利的方法:即在另一堆石子中取走同样多的石子,否则,先手可以取一些石子使得两堆石子相同.所以,当N是奇数输出1,否则输出00.
ac代码:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stack>
#include<queue>
#include<vector>
#include<iostream>
#include<algorithm>
#define MAXN 60001
#define LL long long
#define INF 0xfffffff
#define fab(x) (x)>0?(x):(-x)
#define mem(x) memset(x,0,sizeof(x))
#define PI acos(-1)
using namespace std;
int main()
{
int n,t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf(n%2?"1\n":"0\n");
}
return 0;
}