1. 程式人生 > >藍橋杯vip試題 龜兔賽跑

藍橋杯vip試題 龜兔賽跑

BASIC-25

問題描述

話說這個世界上有各種各樣的兔子和烏龜,但是研究發現,所有的兔子和烏龜都有一個共同的特點——喜歡賽跑。於是世界上各個角落都不斷在發生著烏龜和兔子的比賽,小華對此很感興趣,於是決定研究不同兔子和烏龜的賽跑。他發現,兔子雖然跑比烏龜快,但它們有眾所周知的毛病——驕傲且懶惰,於是在與烏龜的比 賽中,一旦任一秒結束後兔子發現自己領先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”,分別表示烏龜獲勝,兔子獲勝,或者兩者同時到達終點。
  第二行輸出一個正整數,表示獲勝者(或者雙方同時)到達終點所耗費的時間(秒數)。

#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	float v1,v2;
	int t,s,l;
	cin>>v1>>v2>>t>>s>>l; 
	int maxtime=l/v2;
	int time;
	int l1=0,l2=0;
	for(time=0;time<maxtime;time++){
		if(l1-l2>=t){
			l2=l2+v2*s;
				time=time+s-1;
			if(l2>=l) {
				cout<<"R "<<time+1; break;
			}
			continue ;
		}
		else{
			l1=l1+v1;
			l2=l2+v2;
			if(l1>l&&l2<l) {
				cout<<"T "<<time+1; break;
			}
			if(l1>l&&l2>l) {
			  if(((l-l1)/v1-(l-l2)/v2)>0){
				cout<<"T "<<time+(l-l1)/v1;break;
			}
			else{
			cout<<"R "<<time+(l-l2)/v2; break;	
				
			}
			}
		
		
				if(l2>l&&l1<l) {
				cout<<"R "<<time+1; break;
			}
			if(l2==l2&&l1==l){
				cout<<"D "<<time+1; break;
			}
		}
	}
	return 0;
}