一个简单的抽牌问题[c语言]

一个简单的抽牌问题[c语言],第1张

链接:登录—专业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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/874701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)