7 22 龜兔賽跑 20分 Python

2021-10-25 12:15:55 字數 1655 閱讀 5318

烏龜與兔子進行賽跑,跑場是乙個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3公尺,兔子每分鐘前進9公尺;兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘;而烏龜非常努力,一直跑,不休息。假定烏龜與兔子在同一起點同一時刻開始起跑,請問t分鐘後烏龜和兔子誰跑得快?

輸入格式:

輸入在一行中給出比賽時間t(分鐘)。

輸出格式:

在一行中輸出比賽的結果:烏龜贏輸出@_@,兔子贏輸出^_^,平局則輸出-_-;後跟1空格,再輸出勝利者跑完的距離。

輸入樣例:

242
輸出樣例:

@_@ 726
解題思路:

本題中的烏龜一直跑,比較容易計算,比較難的是兔子,那我們迴圈細化到每一分鐘。

本題主要乙個難點我認為其實就是兔子中途休息三十分鐘,這個「休息」應該如何實現,我起初嘗試了設定flag判斷兔子的狀態,這個方法,可行,但是相對複雜,因為還要獲取兔子開始休息的時間,然後計算結束休息的時間,到達結束時間時,再把兔子的狀態改為跑步。相對比較麻煩。

兔子休息30分鐘,換一種思路就是烏龜比兔子多跑了30分鐘,也就是兔子原地不動,給烏龜的距離加上90公尺,時間加上30分鐘,如此去實現兔子「休息」30分鐘。注意,此處還應加乙個判斷,判斷距離輸入的時間是否超過30分鐘,超過30分鐘直接加就行,如果不足30分鐘,則需要根據剩餘的時間做一下計算。

ac**:

n =

int(

input()

)#從控制台讀取時間

wg, tz =0,

0#定義烏龜wg和兔子tz的初始運動距離為0

i =1

while i <= n:

#注意,此處不能用for i in range()

wg +=

3#因為range是對區間的數字乙個乙個遍歷,無法起到修改時間的效果

tz +=

9if i %

10==

0and tz > wg:

#跑了10分鐘並且兔子超過了烏龜

if n - i >=30:

#距離比賽剩餘時間是否超過30分鐘

i +=

30 wg +=

90else

: wg +=

((n - i)*3

) i = n

i +=

1if wg > tz:

#判斷誰贏了

print

('@_@ {}'

.format

(wg)

)elif tz > wg:

print

('^_^ {}'

.format

(tz)

)else

:print

('-_- {}'

.format

(wg)

)

7 22 龜兔賽跑 (20 分)

烏龜與兔子進行賽跑,跑場是乙個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3公尺,兔子每分鐘前進9公尺 兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘 而烏龜非常努力,一直跑,不休息。假定烏龜與兔...

7 22 龜兔賽跑 (20 分

烏龜與兔子進行賽跑,跑場是乙個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3公尺,兔子每分鐘前進9公尺 兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘 而烏龜非常努力,一直跑,不休息。假定烏龜與兔...

7 22 龜兔賽跑 (20 分

7 22 龜兔賽跑 20 分 烏龜與兔子進行賽跑,跑場是乙個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3公尺,兔子每分鐘前進9公尺 兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘 而烏龜非常努力...