題一:
有些螞蟻在一條水平線上走動,每只螞蟻的速率都是1cm/s。當乙隻螞蟻走到水平線的任何乙個端點時,它都會立刻掉下來。
當兩隻螞蟻碰到一起時他們都會立刻調頭向相反方向移動。
我們知道螞蟻們在水平線上的初始位置,但不幸的是,我們不知道他們初始的運動方向。
你的任務是計算所有螞蟻從水平線上掉下來可能所需的最早和最晚的時間。
掉頭轉向 等效於 擦肩而過,繼續爬行
思想:計算每一次螞蟻爬出桿子所需的時間的最大值,然後求max,min就行了 o(n)演算法
題目二:
五隻猴子採得一堆桃子,半夜裡第一只猴子偷偷起來把桃平均分成五分,發現還多乙個,它吃了哪個桃子,還拿走其中的乙份,第二隻猴子起來又把桃子分成五分,還多乙個,它吃了那個桃子,有拿走其中的乙份,第三第四第五只猴子都如此做了,請問這堆桃子有多少個。
思想:
設開始有n個桃子,我們把n寫成(n+4)-4.第乙個猴子來了,吃掉1個,還有桃子 (n+4)-4-1=(n+4)-5,
這時恰好可分成5份,每份的桃子數為
[(n+4)-5]/5=(n+4)/5-1
(n+4)/5必須為整數,所以(n+4)是5的倍數,
第乙個猴子藏掉乙份後,剩下的桃子為:
(4/5)×[(n+4)-5]=(4/5)×(n+4)-4
同樣,第二個猴子來了,一吃一藏之後,剩下的桃子數為
(4/5)×[(4/5)×(n+4)-5]
由於(4/5)×(4/5)×(n+4)是整數,故(n+4)應是5×5=25的倍數,
如此一來五個猴子一吃一藏,恰好剩下
(4/5)×(4/5)× (4/5)×(4/5) ×(4/5) ×(n+4)-5個桃子,
故(n+4)必須是5×5×5×5×5的倍數,
即n+4=5^5
所以: n=3125-4=3121
即開始最少有3121個桃子.
java螞蟻爬桿
ant private void setmaxtime maxtime maxnearsideposition.divide speed public bigdecimal getmaxtime private void setmintime bigdecimal anotherhalflength...
螞蟻爬桿問題
問題描述 有一根27厘公尺長的細木桿,在第3厘公尺,7厘公尺,11厘公尺,17厘公尺,23厘公尺這五個位置上各有乙隻螞蟻,木桿很細,不能同時通過兩隻螞蟻,開始時,螞蟻的頭朝向左還是右是任意的,他們只會朝前走或掉頭,但不會後退,當兩隻螞蟻相遇後,螞蟻會同時掉頭朝反方向走,假設螞蟻們每秒鐘可以走1厘公尺...
螞蟻爬桿問題
告訴你有乙個長為l l 10000 的木桿,上面有n n 1000 個螞蟻,他們一開始的朝向隨機,他們會以一定的速度一直向當前方向走,直到兩隻螞蟻相遇,他們會立即掉頭 即往相反方向走 計算t秒後螞蟻的位置 輸入的第一行為陣列個數,每組陣列第一行為三個正整數,l,t,n,分別表示長度,時間,螞蟻個數。...