題目
烏龜與兔子進行賽跑,跑場是一個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3米,兔子每分鐘前進9米;兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,于是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘;而烏龜非常努力,一直跑,不休息。假定烏龜與兔子在同一起點同一時刻開始起跑,請問T分鐘后烏龜和兔子誰跑得快?
輸入格式:
輸入在一行中給出比賽時間T(分鐘)。
輸出格式:
在一行中輸出比賽的結果:烏龜贏輸出@_@
,兔子贏輸出^_^
,平局則輸出-_-
;后跟1空格,再輸出勝利者跑完的距離。
輸入樣例:
242
輸出樣例:
@_@ 726
思路:
反復思考了很長時間,雖然一開始的思路很清晰,但是一開始感到無從下手,在不斷的完善中,終于完全寫正確了。寫完后看了網上其他人的算法,感嘆每個人的思考方式都各具特色,可能我的是比較笨拙的
方法吧,僅供大家參考。
分析發現,其實時間t只在最初的十分鐘內,逐次遞增,以后都是十分鐘或者30分鐘的增加,且10分鐘之后t總是整數。這就帶來判斷的一個問題,當輸入的T為非整數時,怎樣進行判斷。T為非整數,可分為兩種情況:第一,它以休息結束。第二,它以龜兔跑步中結束。這需要加入判別變量進行判斷。而且需要注意的是,時間小于10分鐘與不小于10分鐘面臨的情況十不同的。(一開始省略的這個判斷,很苦惱為什么一直不對)。
我書寫的代碼的關鍵在,要在總時間中減去休息的部分,所以添加i變量,用于計算一共休息了幾個30分鐘。
代碼如下:
?
?
?
?