五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?

这是一个典型的逆向思维问题,跟微软那个什么海盗分宝石也不什么金币的差不多。

我们先看看第五个猴子是怎么回事。

第五个猴子吃掉一个后,得到的桃子数刚好可以被五整除。于是我们假设第五个猴子起来的时候看到了X个桃子。

(X - 1) mod 5 =0

X个桃子是第四个猴子吃掉一个并拿走一堆后的产物,那么第四个猴子吃掉一个后,拿走之前就是(5/4*X)个桃子,从而第四个猴子起来的时候实际上看到了Y个桃子

Y个桃子是第三个猴子吃掉一个并拿走一堆后的产物,于是第三个猴子起来的时候看到了Z个桃子

Z个桃子是第二个猴子的产物,那么第二个猴子起来的时候就看到了:

于是第一个猴子起来的时候看到了:

于是我们假设原来的桃子是N个,那么N和X的关系就是下面的等式。

于是可见,N必须:

1. 为整数

2. 与256相乘再减去1476为625的倍数

3. 计算出的X必须 mod 5 为1

4. X必须是4的倍数

做个程序枚举满足上面的N就OK了。

for(unsigned int i = 1;;i++)

{

if((256*i - 1476)%625 == 0)

{

unsigned int nX = (256*i - 1476) / 625;

if(nX % 5 ==1 && nX%4 == 0) break;

}

}

如果考虑一点点效率,那么应该枚举X,代码就改成:

for(unsigned int X = 1;;X+=5)

{

if((625*X + 1476)%256 == 0)

break;

}

五猴分桃python_猴子分桃问题 | 学步园相关推荐

  1. 五猴分桃python_猴子分桃问题——一个简单的递归

    五只猴子分桃.半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只.于是,它吃掉了一个,拿走了一堆: 第二只猴子起来一看,只有四堆桃.于是把四堆合在一起,分成相等的五堆,又多出一个.于是,它也吃掉 ...

  2. python猴子分桃_猴子分桃 - Ryan in C++ - 博客园

    猴子分桃的故事大体有两种描述: 描述 1 :五只猴子分桃.半夜,第一只猴子先起来,它把桃分成了个数相等的五堆,多出一只:于是,它吃掉了一个,拿走了一堆.第二只猴子起来一看,只有四堆桃,于是把四堆合在一 ...

  3. c语言猴子分桃问题,猴子分桃问题

    this.p={ m:2, b:2, loftPermalink:'', id:'fks_087064081094080068080094080095080083088068085084087075' ...

  4. java分桃子_猴子分桃子.java

    问题描述:猴子分桃:海 滩上有一堆桃子,五只猴子来分. 第一只猴子把这堆桃子凭据分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份. 第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同 ...

  5. c语言猴子偷桃问题,猴子偷桃问题

    还是C语言版的问题,还是一个用递归的问题,很有意思. 五只猴子采得一堆桃子,猴子彼此约定隔天早起后分食.不过就在半夜里,一只猴子偷偷起来,把桃子平均分成五堆后,发现还多一个,它吃掉这个桃子,并拿走了其 ...

  6. k线顶分型 python_顶底分型K线

    顶底分型K线 2021-01-14 牢记这三根K线组合,"低吸高抛"很简单,主力资金都害怕你知道文轩点睛主打短线,每日盘前一股,个人微信:sh60001317 人赞同了该文章我们在 ...

  7. k线顶分型 python_顶底分型的实战操作要点(转)

    顶底分型的实战操作要点 K线组合,简单明了,实战中要重视,尤其的是顶分型和底分型的组合,是缠论的一个技术要点. 1.K线先经过包含关系的处理. 如何包含处理我博客里有图例. 2.最有杀伤力的顶分型. ...

  8. k线顶分型 python_顶底分型-(K线分类及顶底分型的一种数学原理 源码 贴图)...

    好股票软件下载网(www.goodgupiao.com)提示:您正在下载的是:顶底分型-(K线分类及顶底分型的一种数学原理 源码 贴图) 参考缠论,研究了很多天终于将顶底分型进行了具体的数学量化,涵盖 ...

  9. 五猴分桃题解析(C语言5种解法)

    五猴分桃题解析(C语言 5 种解法 ) 本人喜欢探索各种算法.80年代听闻五猴分桃题,颇感兴趣.曾尝试求解,得小学算术解法和迭代(递增,递减)算法.那时还没有PC是用算盘计算的,那"二弹一星 ...

最新文章

  1. 用了这么多年的 Postman,竟然用错了~
  2. [No0000A6]Visual Studio 2015 中的常用命令的默认键盘快捷键-VS2015 Shortcut
  3. (转)Linux(Centos)之安装Java JDK及注意事项
  4. [云炬创业基础笔记]第四章测试21
  5. 关于EMF模型的操作,赶紧记下来
  6. centos8 配置 dns_如何在Ubuntu 18.04上设置DNS名称服务器 | linux资讯
  7. 在禁用视图状态的情况下仍然使用ViewState对象
  8. python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】
  9. 【Hadoop学习】Super用户以其他用户的名义执行操作
  10. 自动柜员机属于微型计算机的一种,自动柜员机属于微型计算机的一种。(  )...
  11. Shader Forge中文帮助手册
  12. 英语学习详细笔记(十)形容词
  13. 【可靠性评估】电力系统可靠性评估matlab仿真
  14. 有向图(网)、无向图(网)的构造以及遍历
  15. (12)WLAN体系结构及各层的主要功能
  16. 傲游 android 2.3,傲游浏览器安卓版-傲游浏览器手机版v5.2.3.3256-3454手机软件
  17. EMC选定计划首现国内厂商(迪思杰)
  18. html 页面 title keyworld 的 SEO优化的 基本设置格式
  19. GE可能会出售其工业软件业务的股份
  20. SpringCloud重试机制配置

热门文章

  1. 利用批处理脚本批量删除电脑上的空文件夹
  2. 新浪云服务器注册免费,新浪免费云空间SAE注册及云豆获取方法
  3. 四六级听力考试高频词汇分类记忆-日常生活类
  4. android 日历 签到,Android MaterialCalendarView 日历使用 每日签到
  5. 默纳克系统服务器看平衡系数,默纳克不放重物空轿厢做平衡系数方法
  6. python sklearn metrics,在Python中sklearn.metrics.mean_squared_error越大越好(否定)?
  7. html圆角半径,CSS3 / 绘制四个角不同半径的圆角边框 - 汇智网
  8. 关于MAC安装windows【支持老版本】 支持安装全系列windows
  9. Scheduler 配置与注意事项
  10. RoundedCorners