加特林大战僵尸(时间的比较问题)

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");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值