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

我自己是这样想的,问题得从最后那个猴子看起,最后那个猴子依然能将桃子分5堆剩一个,则设在最后那个猴子之前剩下数量是A,A%5=1并且还能平分成4堆没有剩余,所以A%4=0。然后,倒数第二只猴子之前的数量就是A+A/4+1个,并且重复之前的步骤,如果在到第一只猴子之前都没遇到问题,那么就能得出结果了。如果在中间出现问题则全部回退到最后那只猴子,重新计算数量。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication64

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine(monkeyPickPeach(5));

Console.ReadKey();

}

static int monkeyPickPeach(int monkeyNum)

{

Int32 resultNum = 1;

Int32 monkeyPicked = 0;

Int32 temp = 0;

Int32 tempSum = 0;

bool isTemp = false;

while (monkeyPicked < monkeyNum)

{

temp = resultNum / 4 + 1;

if (!isTemp)

{

tempSum = 0;

}

if ((resultNum + temp) % 5 == 1 && resultNum % 4 == 0)

{

resultNum = resultNum + temp;

tempSum += temp;

monkeyPicked++;

isTemp = true;

}

else

{

if (isTemp)

{

resultNum -= tempSum;

}

resultNum++;

monkeyPicked = 0;

isTemp = false;

}

}

return resultNum;

}

}

}

输出结果为:3121

五猴分桃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. k线顶分型 python_顶底分型K线

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

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

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

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

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

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

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

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

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

最新文章

  1. Android 源码编译相关
  2. 正式开放 | 阿里云 10 亿级镜像服务正式支持 Helm Charts,云原生交付再加速!
  3. Linux 比特币Bitcoin采集节点搭建
  4. LeetCode 394: DecodeString (Java)
  5. javascript时间差工具包
  6. html中出现的script失效
  7. 批量修改txt文件名,删除相同部分
  8. Android 使用VideoView播放本地视频详解
  9. mysql获取autoincrement_MySQL获取Auto_increment字段刚插入的值 | 学步园
  10. 两个RGBA四通道颜色的叠加计算方法与代码实现
  11. Ubuntu实现网络链接设置
  12. 集合类 Java中的集合类解析和一些有深入的面试题
  13. vue导入excel进度条_纯前端 vue+ js-xlsx 导入excel表格
  14. 洛谷P1008 三连击
  15. 心跳之旅—iOS用手机摄像头检测心率(PPG)
  16. 在c++程序中执行DOS命令
  17. 华为mate30epro和华为mate30pro有什么区别 华为mate30epro和华为mate30pro参数对比
  18. 蓝桥杯 算法提高 逃跑的牛(BFS)
  19. 信息流驱动百度App高位增长:日活和时长双双跑赢大盘
  20. linux c++ 获取当前时间毫秒_Linux内核中的形形色色的“钟表”,你了解多少?

热门文章

  1. 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)
  2. Maya根据模型建立乐高模型
  3. JS获取Json值以及通过值获取索引
  4. Java Shiro 设置 anon 无效
  5. 【Rust日报】2022-09-11 Shuttle 创建和部署带有ShuttleSerenity的 Discord 机器人!
  6. 我的世界服务器末地文件在哪,我的世界:找不到末地城怎么办?巧用2个操作,就能瞬间找到!...
  7. 阿里云储道深度解析存储系统设计——NVMe SSD性能影响因素一探究竟
  8. 微信支付实战(完整的代码,复制即可用)
  9. 【ceph】ceph-mds journal模块解读
  10. 期末考试查分,基于青果高校教务系统的一个自动python脚本代码。