24小时热门版块排行榜    

查看: 1113  |  回复: 6
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

sudo

木虫 (正式写手)

★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+5): 说的非常详细呀,看能不能贴出代码,让大家看一下 2011-04-20 16:03:02
微尘、梦想(程序强帖+1): 2011-04-23 17:43:06
设总桃子数为x[0],经过1个猴子分后,剩余桃子数为x[1]...经过n个猴子分后,剩余桃子数为x[n],于是有

x[n] = (x[n-1] - 1)*4/5

变形得

(x[n]+4)/(x[n-1]+4) = 4/5

即若令q[n]=x[n]+4,则{q[n]}为等比数列~

于是乎有

x[n]+4 = (x[0]+4)*(4/5)^n                【这里的^表示指数】



x[0] = (5/4)^n * (x[n]+4) - 4

假设一共有n个猴子无压力执行了分桃,那么n-1个猴子分桃后的桃子数,必定满足“减1后能被5整除”的条件,于是令x[n-1]=5k+1,k为整数

那么

x[0] = (5/4)^(n-1) * (x[n-1]+4) - 4
变为式子
x[0] = (5/4)^(n-1) * (5k+5) - 4 = 5^n * (k+1)/(4^(n-1)) -4

因为x[0]必为整数,故(k+1)/(4^(n-1))必须为正整数,而x[0]取最小值时,取(k+1)/(4^(n-1))=1即可

故~

n猴分桃的问题,原来那堆桃子数量最少为5^n-4
其中,n>=2,当n=5时,桃子数最小值为3121


PS:
上面对于n猴分桃的推广,仍然是基于“每个猴子都把桃子分成5堆,然后发现多一个,于是吃掉一个,拿走一堆”的做法假设,而实际上这么做并不大符合逻辑,于是这个分桃问题可以扩展为:

“n只猴子采得一堆桃,它们约定次日早起来分。半夜里,一只猴子偷偷起来,把桃均分成n堆后,发现还多一个,它吃了这桃子,拿走了其中一堆。第二只猴子醒来,又把桃子均分成n堆后,还是多了一个,它也吃了这个桃子,拿走了其中一堆。第三只,第四只......第n只猴子都依次如此做了。问桃子数最少有多少个?”

试试看上面的扩展吧

[ Last edited by sudo on 2011-4-19 at 19:50 ]
2楼2011-04-19 19:48:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 微尘、梦想 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见