基礎練習-龜兔賽跑預測


title: 基礎練習 龜兔賽跑預測
categories:

  • ACM
  • 邏輯
    tags:
  • 龜兔賽跑
    date: 2020-03-12 12:15:22

結果一定是一個整數,題中說是兩個速度的公倍數。必須一秒一秒的走,當兔子領先t米時,後退v1*s米就行,這樣再經過s秒之後回到後退前的位置

題目

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

提交此題

資源限制

時間限制: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

算法

#include<stdio.h>
#include<iostream>
using namespace std;
void shuchu(int , int , int , int , int );
int main(void)
{
    int v1,v2,t,s,l;
    scanf("%d%d%d%d%d", &v1 , &v2 , &t , &s , &l );
    shuchu( v1 ,  v2 , t , s  , l );
    return 0;
}
void shuchu(int v1 , int v2 , int t , int s , int  l )
{
	int s1= 0 , s2 = 0  ,i = 0;
	while(s1 < l && s2 < l)
    {
        s1 +=v1 ;
        s2 +=v2 ;
        i ++ ;
        if( s1 == l || s2 == l)
		{
			break;
		}
        if(s1-s2 >= t)
		{
			s1-= v1 * s;
		}
	//cout<<i<<" "<<s1<<" "<<s2<<endl;	
    }
    if(s1 > s2 )     
	{
		printf("R\n");
	} 
    if( s2 > s1) 
	{
		printf("T\n");
	}
    if(s1 == s2)          
	{
		printf("D\n");
	} 
    printf("%d", i );
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章