蓝桥杯(java)基础练习 龟兔赛跑
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯(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
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner key = new Scanner(System.in);int v1 = key.nextInt();int v2 = key.nextInt();int t = key.nextInt();int s = key.nextInt();int l = key.nextInt();int t2 , t1 , s1 , s2 ;t1 = 1;t2 = 1;s1 = v1;s2 = v2;a: while (true) { //記錄循環標記if (s1 == s2 && s1 == l) {System.out.println("D" + "\n" + t1);break;}if (s1 == l) {System.out.println("R" + "\n" + t1);break;}if (s2 == l) {System.out.println("T" + "\n" + t2);break;}if (s1 - s2 >= t) {t1 += s; //兔子的時間增加,但是距離不變for (int i = 1; i <= s; i++) {t2++;s2 += v2;if (s2 >= l) {System.out.println("T" + "\n" + t2);break a;//退出兩層循環(即退出while循環)}}} else{t1 += 1;t2 += 1;s1 += v1;s2 += v2;}}} }
然而有些比賽相當漫長,全程觀看會耗費大量時間,而小華發現只要在每場比賽開始后記錄下兔子和烏龜的數據——兔子的速度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
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner key = new Scanner(System.in);int v1 = key.nextInt();int v2 = key.nextInt();int t = key.nextInt();int s = key.nextInt();int l = key.nextInt();int t2 , t1 , s1 , s2 ;t1 = 1;t2 = 1;s1 = v1;s2 = v2;a: while (true) { //記錄循環標記if (s1 == s2 && s1 == l) {System.out.println("D" + "\n" + t1);break;}if (s1 == l) {System.out.println("R" + "\n" + t1);break;}if (s2 == l) {System.out.println("T" + "\n" + t2);break;}if (s1 - s2 >= t) {t1 += s; //兔子的時間增加,但是距離不變for (int i = 1; i <= s; i++) {t2++;s2 += v2;if (s2 >= l) {System.out.println("T" + "\n" + t2);break a;//退出兩層循環(即退出while循環)}}} else{t1 += 1;t2 += 1;s1 += v1;s2 += v2;}}} }
總結
以上是生活随笔為你收集整理的蓝桥杯(java)基础练习 龟兔赛跑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯第六届国赛JAVA真题----表格
- 下一篇: .NET下的验证码控件John.Cont