转载链接:https://blog.csdn.net/cy309173854/article/details/78296839

据说“五猴分桃”问题最先是由大物理学家狄拉克提出来的,这一貌似简单的问题曾困扰住了他,经过努力,他只是获得了相当繁琐的求解方法。为了获得简便的方法,他把问题提供给当时的一些数学家,有意思的是竟然也没有得到满意的结果。在后来者的不断努力下,比较简捷的方法才逐步涌现。

李政道和杨振宁曾荣获诺贝尔物理学奖,正是由李政道提议成立了中科大少年班,他在中科大少年班的开班仪式上对“五猴分桃”问题进行适当演绎,提供给了少年班同学。

【五猴分桃】

话说花果山水帘洞有5只聪明的猴子,有一天它们得到了一堆桃子,他们发现那堆桃子不能被均匀分5份,于是猴子们决定先去睡觉,明天再讨论如何分配。夜深人静的时候,猴子A偷偷起来,吃掉了一个桃子后,它发现余下的桃子正好可以平均分成5份,于是它拿走了一份;接着猴子B也起来先偷吃了一个,结果它也发现余下的桃子恰好可以被平均分成5份,于是它也拿走了一份;后面的猴子C、D、E一次如法炮制,先偷吃一个,然后将余下的桃子平均分成5份并拿走了自己的一份,问:这一堆桃子至少有几个?

【解决思路】

设桃子总数为N,先借4个,总数则为N+4个,分成5份,每份相同。

经过第一步后,剩下4(N+4)/5

经过第二步后,剩下4^2(N+4)/5^2

经过第三步后,剩下4^3(N+4)/5^3

经过第四步后,剩下4^4(N+4)/5^4

经过第五步后,剩下4^5(N+4)/5^5

显然,4^5(N+4)/5^5 为整数,因为4^5和5^5互质,则:(N+4)肯定能被5^5整除。

所以,N=5^5×K-4,(K=1,2,3,......) 当K=1时,N为最小值,结果为5^5-4=3121

实际上只需要往桃堆添四个桃,就会发现,实际上每次猴子都是拿走桃堆的五分之一(包括它吃掉的),然后就是一个公比为5/4的等比数列。

【Python源码】

1 #!/usr/bin/python

2 #coding=utf-8

3 #__author__ = ‘cy‘

4 #输入猴子数量

5 monkey = input("Input monkey num:")6 #定义桃子总数函数

7 defshow(n):8 #循环次数

9 for i in xrange(1, monkey+1):10 #下一只猴子应该带走的桃子数

11 t = (n - 1) /monkey12 #格式化输出

13 print u‘%d. 桃子有%d个, 第%i只猴吃1个, 拿走%s个。‘ %(i, n, i, t)14 #前一只猴子带走一份桃子后剩余的桃子总数

15 n = (monkey-1) *t16 #定义功能函数

17 deffun():18 #从1开始

19 k = 1

20 whileTrue:21 t =k22 #循环次数

23 for i in xrange(monkey-1):24 #当前猴子应拿走桃子数为tc,吃拿之前总量应为 monkey * tc + 1,前一个猴子拿走桃子数为tp,则有 (monkey-1) * tp = monkey * tc + 1

25 t = monkey * t + 1

26 #在for循环中含有break时则直接终止循环,不执行else

27 if t % (monkey-1): break

28 t /= (monkey-1)29 #当迭代的对象迭代完并为空时,位于else的子句将执行,即找到符合条件最小整数

30 else:31 print u‘如果猴子%d只:‘%monkey32 print u‘桃子总数要%d个:‘% (monkey * t + 1)33 show(monkey * t + 1)34 break

35 k += 1

36 fun()

原文:https://www.cnblogs.com/VanJing/p/9383278.html

python猴子分桃_用python实现【五猴分桃】问题相关推荐

  1. Python解决五猴分桃问题

    有5只猴子上山去摘桃,一直摘到天黑.5只猴子把所有的桃子放在一起,然后约定第二天一早来分桃. 第二天早晨,来了一只猴子.他等了一会后心想:不如干脆我把桃子分了吧.于是他把桃子分成了五等份,分完后发现多 ...

  2. python猴子分桃问题_用python实现【五猴分桃】问题

    转载链接:https://blog.csdn.net/cy309173854/article/details/78296839 据说"五猴分桃"问题最先是由大物理学家狄拉克提出来的 ...

  3. python猴子分桃_Python 五猴分桃.py问题解答代码

    时间:2019-01-09 概述:五猴分桃 海滩上有一堆桃子,n只猴子来分.第一只猴子把这堆桃子凭据分为n份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成n份,又 ...

  4. JAVA语言五猴分桃简单解法_五猴分桃问题新解及其联想

    了,它不知道有1个同伴已经来过,还以为自己第1个到的呢,于是将地上的桃子堆起来,平均分成5份,发现也多了1个,同样吃了这1个,拿走其中的1堆.第3只.第4只.第5只猴子都是这样--问这5只猴子至少摘了 ...

  5. 五猴分桃c语言课程设计,c语言程序设计五猴分桃问题实验报告.doc

    c语言程序设计五猴分桃问题实验报告.doc 课程设计报告学院.系:吉林大学珠海学院计算机科学与技术系专业名称:软件工程课程设计科目C语言程序课程设计所在班级:10班学生学号:04121010学生姓名: ...

  6. 枚举算法3——五猴分桃

    五猴分桃:五只猴子一起摘了一堆桃子,因为太累了决定先睡一觉再分.一会其中一个猴子先过来将桃子分成五分,剩了一个桃子就给吃了,并拿走其中一份. 一会第2只猴子过来.又将剩下的桃子分成5份,发现多了一个桃 ...

  7. c语言五猴分桃案例分析,C语言程序设计五猴分桃问题实验报告.doc

    C语言程序设计五猴分桃问题实验报告 课 程 设 计 报 告 学院.系:吉林大学珠海学院计算机科学与技术系专业名称:软件工程课程设计科目C语言程序课程设计所在班级:10班学生学号:学生姓名:赵学文指导教 ...

  8. 五猴分桃问题的数学解

    上篇博客(https://fanglin.blog.csdn.net/article/details/119173258)中谈到了五猴分桃问题: 有5只猴子上山去摘桃,一直摘到天黑.5只猴子把所有的桃 ...

  9. 五猴分桃通解公式-敬献给诺贝尔奖获得者李政道博士

    摘要:"五猴分桃问题"是一个中.外非常有名的趣味数学难题.研究这种类型题的简易计算方法曾困扰住了一些大物理学家和数学家.李政道博士在中国科技大学讲学时也特意提到此题, 本文通过对该 ...

最新文章

  1. 东大18秋计算机网络在线作业1答案,东大17秋学期《计算机网络基础》在线作业3 免费答案...
  2. Hive Fetch Task
  3. SSRS动态设置文本框属性
  4. python 判断是不是汉字危机阅读答案_《汉字危机》阅读练习及答案
  5. sodu 命令场景分析
  6. sort命令详解及Nginx统计运用
  7. NOIP2018洛谷P5021:修建赛道
  8. JavaAgent学习笔记
  9. 代码重构 —— 区分代码和数据
  10. python跟excel_Python与Excel 不得不说的事情
  11. MongoDB的角色作用(2)
  12. 多线程——java练习题
  13. 安装thrift遇到Error: libcrypto required
  14. Centos 7环境MySql8.0.28源码安装
  15. 几何平均数和调和平均数是什么?有什么作用?详细资料讨论
  16. 仿苹果 底部弹窗 选择列表
  17. 【DP1】钢条分割详解
  18. 企业上云要几步?中拓互联奉送企业上云全攻略
  19. 【EPS\AI】12款教师节手绘海报矢量模版素材
  20. 自动驾驶地图数据传输协议ADASISv3介绍

热门文章

  1. 原生js控制台(console)打印直角三角形,等腰三角形、矩形、棱形
  2. Win10 2004版如何删除小娜Cortana
  3. C语言里case后加不加括号问题
  4. OFDM子载波频率 知乎_无线数字通信中数据速率、载波频率和带宽的关系
  5. mysql 禁止空密码登录_phpMyAdmin空密码登录被禁止 (参见 允许空密码)
  6. 云会展新业态会成就谁?
  7. 前端直接跨域到腾讯云ocr文字识别(失败)
  8. 【Seaborn】绘图工具的魅力
  9. 学计算机快捷键大全,电脑键盘快捷键大全
  10. Vue学习笔记1---初识vue