链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
Alice 和 Bob 又在玩游戏,今天他们玩抽牌游戏。已知牌堆有共 n 张牌,两个人轮流从桌面上抓牌,记每次抓牌前牌堆有 s 张牌,则两人每一次至少取 1 张牌,至多取s/2 张牌。当一个人没有牌可以取时(即牌堆余量为0张牌时),他就输掉了游戏。对于给定的 n 张牌来说,Bob 先取,请问Alice能否赢得游戏?能则输出 YES ,否则输出 NO。(假设 Alice 和 Bob 都足够聪明)
注:[x]不小于它的最小整数;例如[1/213321]=1;
输入描述:第一行一个正整数 t ,表示有 t 组数据。
接下来 t 行每行一个正整数 n 表示牌堆里牌的数量
1≤t≤100000
1≤n≤1000
输出 t 行,每行一个英文大写字符串表示Alice的胜负状态。
示例1
输入2 1 2输出
NO YES
#include
int main()
{
long long n;
long long x;
int flag;
long long i;
scanf("%lld",&n);
long long j;
for(j=1;j<=n;j++)
{
flag=1;//设置一个开关用来判断是否输入的牌数谁可以赢。
i=0;
scanf("%lld",&x);
while(i<=x)
{
if(i==x)flag=0;
i=(i+1)*2;//因为抽牌是1~拍数的一半有小数直接加一,所以只要抽牌抽到第二个人先抽牌赢得拍数就能赢。因此第二个人想要赢就只能让第一个人怎么抽都抽不到就可以。
}
if(flag==0)printf("YES");
else printf("NO");
if(j
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)