1. 程式人生 > 其它 >試題 基礎練習 龜兔賽跑預測

試題 基礎練習 龜兔賽跑預測

技術標籤:藍橋杯c++

資源限制
時間限制:1.0s 記憶體限制:512.0MB


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


思路解析:

可設變數time用來記錄花費的時間,x1,x2分別代表兔兔和龜龜跑的路程。當兔子停下的時候,利用for迴圈使time++,x2也跟著增加,最後只要對x1,x2進行判斷即可。

原始碼呈上:

#include<iostream>
#include<string>
using namespace std;
string stu;//全域性變數,輸出對應的結果。
void usetime(int v1, int v2, int t, int s, int l)
{
	int x1=0, x2=0;
	int time = 0;
	while (x1 <
l&&x2 < l)//大迴圈 { x1 = x1 + v1;//兔兔路程 x2 = x2 + v2;//龜龜路程 time++;//時間增加 if (x1 >= l || x2 >= l) break; if (x1 - x2 >= t) { for (int i = 0; i < s&&x2 < l; i++)//此時time++,x2=x2+v2,但是v1並沒有改變。 { time++; x2 = x2 + v2; } if (x2 >= l) break; } } if (x1 >= l&&x2 >= l)//三種情況對應著三種結果。 stu = "D"; if(x1>=l&&x2<l) stu = "R"; if (x1 < l&&x2 >= l) stu = "T"; cout << stu << endl; cout << time << endl; } int main() { int v1, v2, t, s, l; cin >> v1 >> v2 >> t >> s >> l; usetime(v1, v2, t, s, l); }

評測結果:

在這裡插入圖片描述

That’s all