专栏作家潘采夫在新浪微博发了一条信息:
正改女儿的数学试题,有一道坑爹题这样的:在火炉上烤饼,饼的两面都要烤,每烤一面要2分钟,炉上只能同时放2张饼。要烤5张饼,至少需要()分钟?标准答案是10分钟,但我算来算去至少得12分钟,而女儿答的是5分钟,到底哪个对呢?
这道数学题目比较简单但很有趣,所以该条信息的转发数和评论数都相当多。
正确的解法是:假设每一个饼有A和B两面,5张饼编号为1、2、3、4、5,则有1A2A,3A4A,5A1B,5B2B,3B4B,一共需要烤5次,共10分钟。
把该题再扩展一下:
火炉上最多可以同时放m张饼,饼的每面需要烤t分钟,现在有n张饼,最短需要多长时间?
据说这个题目曾经在topcoder上面出现过,解法也比较简单。
我的思路是:忽略正反两面,如果有n张饼,则需要烤2n个饼面。显然,如果n <= m,则需要2t的时间。
现在来考虑n > m的情况,我们来分析两种实际例子:
当m=2, n=5,一共有10个饼面
t ●●
t ●●
t ●●
t ●●
t ●●
很明显,需要(10/2)t = 5t的时间
当m=3, n=5,一共有10个饼面
t ●●●
t ●●●
t ●●●
t ●○○
最后只剩一个饼面,但也需要花一个t的时间,所以总时间是4t,即取大于(5*2)/3的整数
所以我的答案是:n <= m ? 2t : ceil(2n/m) * t
补充:
题设中,t是不可分割的,那假如t是可以分割的,答案又是多少呢?
n <= m ? 2t : (2n/m) * t
当n > m 时,操作方法:以一秒钟(或者更短的时间)为单位,把饼放上去,烤一秒钟,然后拿下来。当时间足够小的时候,所花时间为(2n/m) * t。
这时候,炉子是一种资源,还有时间片、调度算法,看来潘采夫还需要给女儿普及《操作系统》课程才行。
来源: http://panweizeng.com/pancaifu-daughter-math.html
正改女儿的数学试题,有一道坑爹题这样的:在火炉上烤饼,饼的两面都要烤,每烤一面要2分钟,炉上只能同时放2张饼。要烤5张饼,至少需要()分钟?标准答案是10分钟,但我算来算去至少得12分钟,而女儿答的是5分钟,到底哪个对呢?
这道数学题目比较简单但很有趣,所以该条信息的转发数和评论数都相当多。
正确的解法是:假设每一个饼有A和B两面,5张饼编号为1、2、3、4、5,则有1A2A,3A4A,5A1B,5B2B,3B4B,一共需要烤5次,共10分钟。
把该题再扩展一下:
火炉上最多可以同时放m张饼,饼的每面需要烤t分钟,现在有n张饼,最短需要多长时间?
据说这个题目曾经在topcoder上面出现过,解法也比较简单。
我的思路是:忽略正反两面,如果有n张饼,则需要烤2n个饼面。显然,如果n <= m,则需要2t的时间。
现在来考虑n > m的情况,我们来分析两种实际例子:
当m=2, n=5,一共有10个饼面
t ●●
t ●●
t ●●
t ●●
t ●●
很明显,需要(10/2)t = 5t的时间
当m=3, n=5,一共有10个饼面
t ●●●
t ●●●
t ●●●
t ●○○
最后只剩一个饼面,但也需要花一个t的时间,所以总时间是4t,即取大于(5*2)/3的整数
所以我的答案是:n <= m ? 2t : ceil(2n/m) * t
补充:
题设中,t是不可分割的,那假如t是可以分割的,答案又是多少呢?
n <= m ? 2t : (2n/m) * t
当n > m 时,操作方法:以一秒钟(或者更短的时间)为单位,把饼放上去,烤一秒钟,然后拿下来。当时间足够小的时候,所花时间为(2n/m) * t。
这时候,炉子是一种资源,还有时间片、调度算法,看来潘采夫还需要给女儿普及《操作系统》课程才行。
来源: http://panweizeng.com/pancaifu-daughter-math.html
没有评论:
发表评论