100个和尚分食100个馒头,大和尚1人吃3个馒头,小和尚3人吃1个馒头,100个和尚各有多少人?
作者:memory 发布时间:2012-01-10, 11:46:04 分类:生活随笔 阅读:1/204
之前有看到鸡兔同笼的算法 大概如下:
头12,脚40,鸡兔各几只
算法:
假设鸡和兔训练有素
吹一声哨,它们抬起一只脚,(40-12=28)
再吹一声哨,它们又抬起一只脚,(28-12=16)
这时鸡都一屁股坐地上了,兔子还两只脚立着
所以,兔子有16/2=8只,鸡有12-8=4只。
这就是高效的算法!
再来看看“百僧分百馍”问题:100个和尚分食100个馒头,大和尚1人吃3个馒头,小和尚3人吃1个馒头,100个和尚各有多少人?
假设和尚们的食量都变大了馒头也变多了(和尚食量和馒头数量都放大3倍,故和尚数量不变,整数好算),变成了大和尚1人吃9个馒头,小和尚1人吃1个馒头(整数好算一点),馒头数量也变多了变成300个,先每人吃1个馒头,所有的小和尚都吃饱了..剩下的都是大和尚吃的..大和尚吃了1个还要吃8个,剩下200个馒头..故大和尚数量是200/8=25个,小和尚数量是100-25=75个....若只有92个和尚分食100个馒头.那么问题变成(300-92)/8=26个,小和尚是92-26=66个...验证馒头数量是26*3+66/3=78+22=100个..OY成功!
头12,脚40,鸡兔各几只
算法:
假设鸡和兔训练有素
吹一声哨,它们抬起一只脚,(40-12=28)
再吹一声哨,它们又抬起一只脚,(28-12=16)
这时鸡都一屁股坐地上了,兔子还两只脚立着
所以,兔子有16/2=8只,鸡有12-8=4只。
这就是高效的算法!
再来看看“百僧分百馍”问题:100个和尚分食100个馒头,大和尚1人吃3个馒头,小和尚3人吃1个馒头,100个和尚各有多少人?
假设和尚们的食量都变大了馒头也变多了(和尚食量和馒头数量都放大3倍,故和尚数量不变,整数好算),变成了大和尚1人吃9个馒头,小和尚1人吃1个馒头(整数好算一点),馒头数量也变多了变成300个,先每人吃1个馒头,所有的小和尚都吃饱了..剩下的都是大和尚吃的..大和尚吃了1个还要吃8个,剩下200个馒头..故大和尚数量是200/8=25个,小和尚数量是100-25=75个....若只有92个和尚分食100个馒头.那么问题变成(300-92)/8=26个,小和尚是92-26=66个...验证馒头数量是26*3+66/3=78+22=100个..OY成功!
标签: 算法





已有 1 条评论 »