描述:
现在又到了毛学姐玩生化危机的时间,问题很简单。现在有一把自动加特林机枪,它每秒发射一颗子弹,子弹的飞行速度是V0。在它的面前有L米的空地,你可以假设机枪是一个点。现在有个一只僵尸来袭,他以速度V1,匀速向加特林机枪走去。僵尸被加特林子弹击中n次才会gg,僵尸在走到加特林机枪的位置后,会用酸液对其进行攻击,只需2s就能摧毁加特林。问:强大的加特林机枪能不能守住这块空地呢?
输入:
输入包含多组数据,每组包含四个数L,V0,V1,N。保证所有数据在int类型范围内。
输出:
如果加特林能干掉僵尸,请输出"YES",否则输出"NO"。
样例输入:
657 62 46 46
771 89 7 2
样例输出:
NO
YES
注,为了简化情况,不会出现僵尸和加特林同归于尽(同时死亡)的情况。
分析:
这道题其实就是小学数学题,千万不要想太多,千万不要想太多,千万不要想太多。
因为我就是因为想太多了才wa了八次(心情复杂)
其实很简单,僵尸到加特林所用的时间其实是和子弹速度没有关系的,所以直接L/V1就能得到僵尸到加特林的时间。又因为不存在同归于尽的情况,所以有l1.0/v1+2>n。
通过与n的比较判断yes 或者no.
还有比较坑的一点就是要注意类型,要不就直接用double,要不就用l0.1
因为是除法啊T^T,要保证小数点后的精度的。
代码如下:
#include<stdio.h>
int main()
{
int l,v0,v1,n;
while(scanf("%d%d%d%d",&l,&v0,&v1,&n)!=EOF)
{
if (l*1.0/v1+2>n)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}