题目描述
现在有一款很火的游戏playerunknown’s battlegrounds,人称“吃鸡”,在里面经常面临跑毒(从安全区外跑进安全区内)的问题,在安全区外,人们会处于中毒状态,每秒会掉a%血,人们可以通过使用道具急救包把血量升回到80%,使用急救包需要原地站着6秒。现在知道在安全区外扣血速度为a%/s,角色和安全区的距离为b米,角色跑步速度为1m/s,角色有c个急救包,请问角色是否能安全跑进安全区内。(PS:角色开始的血量为100%。如果血量降到0%,立刻判定为死亡。使用急救包时,如果刚使用完毕瞬间或者正在使用急救包的时候,血量降到0%,角色立即判定为死亡。顺带一提,这里判断时间不存在0.xxxx秒,最小时间单位为1s)
输入描述:
第一行是样例数T(T<9)
第2到2+T-1行每行有三个整数a b c,其中a为安全区外的扣血速度a%/s,b为角色和安全区的距离,c为急救包的数量。
输出描述:
如果角色能进入安全区输出“YES”。
若角色在安全区外死亡输出“NO”。
输入:
3
1 100 2
6 31 2
7 31 2
输出:
YES
YES
NO
说明:非常简单的一道题,主要考察逻辑思维能力。
#include<stdio.h>
int main()
{
int T,a,b,c,i,j;
scanf("%d",&T);
for(i=0; i<T; i++)
{
scanf("%d%d%d",&a,&b,&c);
for(j=100;;)//我们定义血量是j,那么初始血量为100
{
if(b<=6)//由于我们接下来的步骤中具有对血量的判断,这里的血量确定大于或等于6*a的
{
printf("YES\n");
break;
}
if(j<=7*a)//这里判断我们是否需要使用急救包,血量过高时打包会使急救包利用不够充分
{
if(j<=6*a)//如果血量小于6*a,打包也来不及了,所以直接输出NO
{
printf("NO\n");
break;
}
if(c>0)//如果有急救包,并且血量大于6*a,可以打包回血
{
j=80;
c=c-1;
}
}
b=b-1;//我们的跑动速度是1m/s,所以距离-1
if(b<=0)//当距离小于等于0时,说明我们成功进入安全区
{
printf("YES\n");
break;
}
j=j-a;//扣血
if(j<=0)//如果血量小于等于0,人物死亡
{
printf("NO\n");
break;
}
}
}
}