1. 程式人生 > >加特林大戰殭屍 (2018.11.27)

加特林大戰殭屍 (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;
}