1. 程式人生 > >[Java] 藍橋杯BASIC-24 基礎練習 龜兔賽跑預測

[Java] 藍橋杯BASIC-24 基礎練習 龜兔賽跑預測

問題描述話說這個世界上有各種各樣的兔子和烏龜,但是研究發現,所有的兔子和烏龜都有一個共同的特點——喜歡賽跑。於是世界上各個角落都不斷在發生著烏龜和兔子的比賽,小華對此很感興趣,於是決定研究不同兔子和烏龜的賽跑。他發現,兔子雖然跑比烏龜快,但它們有眾所周知的毛病——驕傲且懶惰,於是在與烏龜的比賽中,一旦任一秒結束後兔子發現自己領先t米或以上,它們就會停下來休息s秒。對於不同的兔子,t,s的數值是不同的,但是所有的烏龜卻是一致——它們不到終點決不停止。然而有些比賽相當漫長,全程觀看會耗費大量時間,而小華髮現只要在每場比賽開始後記錄下兔子和烏龜的資料——兔子的速度v1(表示每秒兔子能跑v1米),烏龜的速度v2,以及兔子對應的t,s值,以及賽道的長度l——就能預測出比賽的結果。但是小華很懶,不想通過手工計算推測出比賽的結果,於是他找到了你——清華大學計算機系的高才生——請求幫助,請你寫一個程式,對於輸入的一場比賽的資料v1,v2,t,s,l,預測該場比賽的結果。

輸入格式輸入只有一行,包含用空格隔開的五個正整數v1,v2,t,s,l,其中(v1,v2<=100;t<=300;s<=10;l<=10000且為v1,v2的公倍數)輸出格式輸出包含兩行,第一行輸出比賽結果——一個大寫字母“T”或“R”或“D”,分別表示烏龜獲勝,兔子獲勝,或者兩者同時到達終點。第二行輸出一個正整數,表示獲勝者(或者雙方同時)到達終點所耗費的時間(秒數)。樣例輸入10 5 5 2 20樣例輸出D4樣例輸入10 5 5 1 20樣例輸出R3樣例輸入10 5 5 3 20樣例輸出T4

package base24;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int v1 = in.nextInt();//兔子速度
        int v2 = in.nextInt();//烏龜速度
        int t = in.nextInt();//領先t米或以上
        int s = in.nextInt();//停下來休息s秒
        int l = in.nextInt();
        int l1 = 0;//兔子當前跑的長度
        int l2 = 0;//烏龜跑的長度
        int breakTime = 0;//兔子休息時間
        int flag = 1; //不在休息
        int countTime = 0;
        while (l1 < l && l2 < l) {
            if (flag == 1 && l1 - l2 < t || flag == 0 && breakTime >= s) {
                flag = 1;
                l1 += v1;
                breakTime = 0;
            } else {
                flag = 0;
                breakTime++;
            }
            l2 += v2;
            countTime++;
        }
        if (l1 > l2) {
            System.out.println("R " + countTime);
        } else if (l1 < l2) {
            System.out.println("T " + countTime);
        } else if (l1 == l2) {
            System.out.println("D " + countTime);
        }
    }
}