前两天在看一个公众号时发现了一个比较有意思的问题,题目如下:

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

然后我就拿着这个题目去找教数学的室友,室友听完了说:“有点麻烦,不算。”然后,俺就开始回屋去想解决办法。

诚然,正如我室友所言,这道题有点麻烦,逻辑很清晰,很好做,只是过程繁琐,机械地重复着(目前我还没想到太好的办法,只能暴力解题),而这,却正是程序设计的强项,一个程序可以极短时间完成大量的计算任务,而我们只需要负责思考怎么算,其他的交给计算机就好~

第一次看到这个题目的时候我想的是循环套循环来解决,for循环疯狂嵌套。。。。。。最后放弃了

C语言版本:
虽然最近一直在用Python,但由于之前用了几年的C,用C来解决问题变成了一种习惯,因此本次也是先写了一个C语言版本:(我觉得我算的是对的哈,如果不对还请指正)

#include<stdio.h>
int main(){
    int a , b, c, d, e;
    a = b = c = d = e = 0;
    while(1){
        a++;
        b = (a - 1) / 5 * 4;
        c = (b - 1) / 5 * 4;
        d = (c - 1) / 5 * 4;
        e = (d - 1) / 5 * 4;
        if((a - 1) % 5 == 0 && (b - 1) % 5 == 0 &&(c - 1) % 5 == 0 &&(d - 1) % 5 == 0 &&(e - 1) % 5 == 0 )
            break;
    }
    printf("至少有%d个桃子", a);
return 0;
}
运行结果如下:

Python语言版本:
 这次写完C直接去写Python,更感受到Python与C在语法上的一些不同,比如一直习以为常的a++,在Python中就是不可以使用的,而a+=1是可以正常使用的。

Python代码如下:

a,b,c,d,e=(0,0,0,0,0)
while True:
    a = a+1;
    b = (a - 1)/5*4
    c = (b - 1)/5*4
    d = (c - 1)/5*4
    e = (d - 1)/5*4
    if (a-1)%5 == 0 and (b - 1)%5 == 0 and (c - 1)%5 == 0 and (d - 1)%5 == 0 and (e - 1)%5 == 0:
        break
print(a)
 运行结果如下:

3121
[Finished in 2.8s]
这么一看,Python确实比C慢了不老少啊!!!

恐怖如斯。

虽然题目很简单,但由于我是个菜鸡依然乐在其中,不足之处还请各位大佬批评指正,如果有其他简便算法或者能优化一下就更美妙了。

这种解法太暴力了,毫无美感(郑弟弟附体)

写在结尾
今天的我,依然帅气!
————————————————
版权声明:本文为CSDN博主「青西284」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_60604095/article/details/120158904

练习——关于猴子分桃的程序设计相关推荐

  1. 猴子分桃问题c语言程序设计,猴子分桃问题

    维普资讯 http://doc.wendoc.com 第 4期 高中数学教与学 .短文集锦. 猴子分桃问题 张亚军 (吉林省榆树市弓棚一中, 1 3 0 4 0 6 ) 这是一道流传很广的趣味数学问题 ...

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

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

  3. c语言分桃分题设计思路,C语言实现的猴子分桃问题算法解决方案

    本文实例讲述了C语言实现的猴子分桃问题算法.分享给大家供大家参考,具体如下: 问题: 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份 ...

  4. java海滩上有一,Java猴子分桃问题--三种算法

    海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五分,多了一个,这只猴子把多的一个扔入海中,拿走了一份,第二只猴子把剩下的桃子又平均分成 五分,又多了一个,他同样把多的一个扔入海中,拿走了 ...

  5. java猴子分桃问题_通俗易懂、简单粗暴得解决猴子分桃问题

    起因 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子分为五份,多了一个,这只猴子把多的一个仍入海中,拿走了一份.第二只猴子把剩下的桃子平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一 ...

  6. java猴子分桃_算法——猴子分桃

    想做些有关"算法"的练习题,在网上无意间看到了一道很经典的算法题--猴子分桃,于是百度了一下,才发现这道题的相关文档很多很多,但最多的也就是使用C++或者Java来解决这道题,而自 ...

  7. python猴子分桃子的数学题_小学奥数猴子分桃练习及答案【三篇】

    小学奥数猴子分桃练习及答案[三篇] 导读: 本文 小学奥数猴子分桃练习及答案[三篇] ,仅供参考,如果 觉得很不错,欢迎点评和分享. [篇一] 给猴子们分桃子 , 如果每个猴子分 7 个多出 2 个 ...

  8. 通俗易懂、简单粗暴地解决各类猴子分桃问题

    起因 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子分为五份,多了一个,这只猴子把多的一个仍入海中,拿走了一份.第二只猴子把剩下的桃子平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一 ...

  9. 猴子分桃问题(JAVA实现)

    猴子分桃问题(JAVA实现) 题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个 ...

最新文章

  1. poj 3026 BorgMaze 最小生成树Kruskal、Prim(Prim VS报错待解决
  2. lvs的dr和nat模式配置备忘
  3. Unity学习笔记(二)——Unity ML-agents安装与配置(1.9.1)
  4. [你必须知道的异步编程]——基于任务的异步模式
  5. 企业微信hook,企业微信软件
  6. 软件项目经理应具备的素质和条件_项目经理应具备的素质与能力
  7. HTML 有序列表 字母,HTML之有序列表教程
  8. GitLab 注册 Runner Registering Runners
  9. mysql的外文图书_外文数据库
  10. 中职学计算机专业考本科难吗,国际本科难不难(中职考本科难不难)
  11. iMeta | ggClusterNet微生物网络分析和可视化保姆级教程
  12. 计算机制作卡通插画,​电脑制作漫画有哪些方法?
  13. shader拖尾_插件(一)武器拖尾效果
  14. 清空回收站如何找回?
  15. 液冷技术或成服务器散热未来趋势
  16. PHP 操作redis 详细讲解
  17. 材料模拟计算超算云平台上线,发布会推出两项优惠政策
  18. iOS ksyhttpcache音视频缓存
  19. 那个谷歌的网红扔鸡蛋的题,来看看教科书式的回答
  20. 公司测试部门来了个00后卷王,老油条感叹真干不过,不过.....

热门文章

  1. 如何关闭苹果手机自动扣费_如何在苹果手机里APP关闭连续包月续费会员?简单几步,切换自由...
  2. tp5.1添加定时器任务linux,TP5 用cron实现linux定时任务
  3. JS事件基础(鼠标事件,键盘事件及默认行为)
  4. 游侠怎么设置java路径_使用小型虚拟机avian将Java转为本地程序
  5. FIFA21服务器维护,FIFA21网络连接检测功能怎么用 FIFA21网络连接检测功能详解-游侠网...
  6. 微软sql服务器是mpp,mpp数据库服务器
  7. web项目漏洞扫描软件
  8. 《程序员》9月精彩内容:微信小程序 中国人工智能大会集锦
  9. Ubuntu上面搭建Java开发环境
  10. 仰恩大学2004年计算机系,再见,仰恩大学!谢谢你喂饱我的四年青春!