Description
现在又到了毛学姐玩生化危机的时间,问题很简单。现在有一把自动加特林机枪,它每秒发射一颗子弹,子弹的飞行速度是V0,在它的面前有L米的空地,你可以假设机枪是一个点。现在有个一只僵尸来袭,他以速度V1匀速向加特林机枪走去。僵尸被加特林子弹击中n次才会gg,僵尸在走到加特林机枪的位置后,会用酸液对其进行攻击,只需2s就能摧毁加特林。问:强大的加特林机枪能不能守住这块空地呢?
Input
输入包含多组数据,每组包含四个数L,V0,V1,n保证所有数据在int类型范围内。
Output
如果加特林能干掉僵尸,请输出"YES",否则输出"NO"。
Sample Input 1
657 62 46 46
771 89 7 2
Sample Output 1
NO
YES
思路:
这主要是看谁赢的问题,转化成比较 让对方gg的时间大小就行了
设加特林干掉僵尸的时间:t1,仔细分析一下,加特林干掉僵尸的时间就可以理解是n,即t1=n。因为子弹一旦发射出去,子弹一定比机枪位置更先接触到僵尸。
设僵尸摧毁加特林的时间:t2,t2=L/V1+2
注意:
本题为了简化情况,不会出现僵尸和加特林同归于尽(同时死亡)的情况。t1!=t2
总结:
t1=n有点子难想,后来也有纠结于float还是int类型的问题
L/V1有可能不会是整数了,要用float,注意精度损失问题
\符号:两边都是整数,结果为整数。两边只要有一个小数,结果就为小数
#include<stdio.h>
int main()
{
float L,V0,V1,n,t1,t2;
while(scanf("%f%f%f%f",&L,&V0,&V1,&n)!=EOF)
{
t1=n;
t2=L/V1+2;
if(t2>t1)printf("YES\n");
else printf("NO\n");
}
}