天天看點

龜兔賽跑預測 Java語言 藍橋杯

一、問題描述

  話說這個世界上有各種各樣的兔子和烏龜,但是研究發現,所有的兔子和烏龜都有一個共同的特點——喜歡賽跑。于是世界上各個角落都不斷在發生着烏龜和兔子的比賽,小華對此很感興趣,于是決定研究不同兔子和烏龜的賽跑。他發現,兔子雖然跑比烏龜快,但它們有衆所周知的毛病——驕傲且懶惰,于是在與烏龜的比賽中,一旦任一秒結束後兔子發現自己領先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

樣例輸出

D

4

樣例輸入

10 5 5 1 20

樣例輸出

R

3

樣例輸入

10 5 5 3 20

樣例輸出

T

4

二、思路

題目中有至關重要的一句話——l為v1,v2的公倍數,這一句話将此題的難度下降了許多。由此句我們可以得知烏龜兔子某一方(或雙方)到達終點時的時間必定是正整數,我們隻需要以一秒為一個機關來計算便可解出此題。

三、代碼

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		//錄入資料
		int v1 = sc.nextInt();
		int v2 = sc.nextInt();
		int t = sc.nextInt();
		int s = sc.nextInt();
		int l = sc.nextInt();
		
		int s1=0,s2=0;//分别表示兔子\烏龜距離起點的距離
		int time = 0;
		while(s1 < l && s2 < l ){
			if(s1 - s2 >= t){//兔子休息
				for(int i=0;i<s;i++){
					s2 += v2;
					time++;
					if(s2 == l)//烏龜到達終點
						break;
				}
			}else{//兔子不休息
				s1 += v1;
				s2 += v2;
				time++;
			}
		}
		if(s1 == l && s2 < l)
			System.out.println("R");
		else if(s1 < l && s2 == l)
			System.out.println("T");
		else
			System.out.println("D");
		System.out.println(time);
	}
}

           

繼續閱讀