猴子分桃问题的几种解法
五只猴子采得一堆桃子,半夜里第一只猴子偷偷起来把桃平均分成五分,发现还多一个,它吃了哪个桃子,还拿走其中的一份,第二只猴子起来又把桃子分成五分,还多一个,它吃了那个桃子,有拿走其中的一份,第三第四第五只猴子都如此做了,请问这堆桃子有多少个。
(新人)
在参考了一些经典解法、研究了该问题的过程后,以下为一些自认为较为简洁明白的解法程序
1.利用总式子为整数,进行枚举循环。
#include <stdio.h>
#include <stdlib.h>
int main()
{double a=2;int i,j,k;for (i = 0; i < 3200; i++) //这里估计了一下大致范围{for (j = 0; j < 5; j++) //含义是对a进行题述处理,中间过程及结果必须是整数,以此为标准来判断{k = 0;a = 0.8*(a - 1);if ((a -(int)a)!=0 ) //判断整数break;k = 1;}if (k==1)break;a=3+i;}a = 2 + i; //注意,如果直接输出,结果是第五只猴子分后剩余的数量,同时,i已经多了1printf("桃子数量为%.01lf", a); //double 一般对应lfreturn 0;
}
当然,虽然个人认为这种较好理解,但总感觉结构比较拖沓。只是一种方向初步的想法,仅仅参考,并不是较为泛用的方法
2. 4 的倍数
#include <stdio.h>
#include <stdlib.h>
int main()
{int i=0,x, t;for(x=4; i < 5;x=x+4){ t=x; //要注意此处容易漏掉,必须有交换,否则x=x+4中的x是进行迭代过后的x!!for (i = 0; i < 5; i++){if (t % 4 != 0)break;t = (t / 4) * 5 + 1; }}printf("%d", t);return 0;
}
最根本的依据确实很像:都是依据每次分桃后必为4的倍数,但处理过程有所不同。
想借此拓展一些附加功能,比如输出每次的执行结果,整理成表,探究不同形式的循环设置,再看看书中对于循环的讲解,拓宽应用的思路
3.看知乎还有人直接给了通项公式
还不会latex,直接打出来是y=n^n-n+1,n是猴子个数
猴子分桃问题的几种解法相关推荐
- java海滩上有一,Java猴子分桃问题--三种算法
海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五分,多了一个,这只猴子把多的一个扔入海中,拿走了一份,第二只猴子把剩下的桃子又平均分成 五分,又多了一个,他同样把多的一个扔入海中,拿走了 ...
- java猴子分桃问题_通俗易懂、简单粗暴得解决猴子分桃问题
起因 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子分为五份,多了一个,这只猴子把多的一个仍入海中,拿走了一份.第二只猴子把剩下的桃子平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一 ...
- java猴子分桃_算法——猴子分桃
想做些有关"算法"的练习题,在网上无意间看到了一道很经典的算法题--猴子分桃,于是百度了一下,才发现这道题的相关文档很多很多,但最多的也就是使用C++或者Java来解决这道题,而自 ...
- python猴子分桃_猴子分桃 - Ryan in C++ - 博客园
猴子分桃的故事大体有两种描述: 描述 1 :五只猴子分桃.半夜,第一只猴子先起来,它把桃分成了个数相等的五堆,多出一只:于是,它吃掉了一个,拿走了一堆.第二只猴子起来一看,只有四堆桃,于是把四堆合在一 ...
- 通俗易懂、简单粗暴地解决各类猴子分桃问题
起因 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子分为五份,多了一个,这只猴子把多的一个仍入海中,拿走了一份.第二只猴子把剩下的桃子平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一 ...
- java 5只猴子分桃_通俗易懂、简单粗暴得解决猴子分桃问题
c编程技巧-117个问题解决方案示例 79.2元 包邮 (需用券) 去购买 > 起因 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子分为五份,多了一个,这只猴子把多的一个仍入海中,拿走了一 ...
- 猴子分桃问题的解决方法
猴子分桃问题的解决方法 1 问题 1979年,李政道博士给中国科技大学少年班出过一道智趣题:5只猴子分一堆桃子,怎么也分不成5等分,只好先去睡觉,准备第二天分.夜里1只猴子偷偷爬起来,先吃掉一个桃子, ...
- 分解因数 ,求美国节日,猴子分桃
问答题 问答题1:X86体系结构在保护模式下中有三种地址,请问一下那种说法是正确的? A: 虚拟地址先经过分段机制映射到线性地址,然后线性地址通过分页机制映射到物理地址 B: 线性地址先经过分段机制映 ...
- c语言分桃分题设计思路,C语言实现的猴子分桃问题算法解决方案
本文实例讲述了C语言实现的猴子分桃问题算法.分享给大家供大家参考,具体如下: 问题: 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份 ...
最新文章
- 【Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )
- OpenCASCADE绘制测试线束:图形命令之VIS 查看器命令
- 基于python、虹软实现人脸检测,人脸识别
- 在 CAP 中使用 AOP ( Castle.DynamicProxy )
- python数据库连接池使用
- (三)SpringBoot之配置文件详解:Properties和YAML
- python类中的 init_Python类中__init__()的作用
- 【超链接】多媒体工具网站
- 基于JDBC的数据库连接池高效管理策略
- 阅读软件怎么添加书源_「看书+听书」两款神器软件,我已深深的为之折服了...
- developer.biao.daily.20140731
- win7笔记本外接显示器html,笔记本连显示器的步骤_笔记本如何外接显示器-win7之家...
- 五年级上册计算机教案闽教版,小学信息技术闽教版五年级上册第7课 认识因特网教案设计...
- 分部积分法解决二重积分问题
- 为什么有很深的windows基础还是不能动摇linux半步
- 【ubuntu】gcc: fatal error: cannot execute ‘cc1plus’: execvp: No such file or directory
- SPIN Routing Algorithm
- Flash Socket 的基本通讯协议流程例子
- chan队列之发送方等待接收方处理结果
- C语言 火车票信息管理系统
热门文章
- 关于react-router-dom 6.0.1的基础写法 解决Error: A <Route> is only ever to be used as the child of <Routes>
- win10进入bios步骤
- 长尾关键词排名优化技巧
- ACCV 结果出来了,大家来晒一晒吧~
- 论文笔记:Deep Object Co-Segmentation(ACCV2018)
- JS 获取中国、各省、各市、各区的边界经纬度点集
- 找工作经历--生活的味道都在里面
- I don't know what to say 事件的 NPM 包中奖名单,有你在用的吗?
- K8S(二)安装配置篇
- Gambler Bo