加特林大战僵尸 (2018.11.27)

描述:
现在又到了毛学姐玩生化危机的时间,问题很简单。现在有一把自动加特林机枪,它每秒发射一颗子弹,子弹的飞行速度是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,要不就用l
0.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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43262763/article/details/84564517