题一:
有些蚂蚁在一条水平线上走动,每只蚂蚁的速率都是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个桃子.