练习——关于猴子分桃的程序设计
前两天在看一个公众号时发现了一个比较有意思的问题,题目如下:
题目:
五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了个数相等的五堆,多出一只;于是,它吃掉了一个,拿走了一堆。第二只猴子起来一看,只有四堆桃,于是把四堆合在一起,分成相等的五堆,又多出一个;然后,它也吃掉了一个,拿走了一堆。剩下的三只猴子也都是这样分的。问:这堆桃至少有多少个?
然后我就拿着这个题目去找教数学的室友,室友听完了说:“有点麻烦,不算。”然后,俺就开始回屋去想解决办法。
诚然,正如我室友所言,这道题有点麻烦,逻辑很清晰,很好做,只是过程繁琐,机械地重复着(目前我还没想到太好的办法,只能暴力解题),而这,却正是程序设计的强项,一个程序可以极短时间完成大量的计算任务,而我们只需要负责思考怎么算,其他的交给计算机就好~
第一次看到这个题目的时候我想的是循环套循环来解决,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
练习——关于猴子分桃的程序设计相关推荐
- 猴子分桃问题c语言程序设计,猴子分桃问题
维普资讯 http://doc.wendoc.com 第 4期 高中数学教与学 .短文集锦. 猴子分桃问题 张亚军 (吉林省榆树市弓棚一中, 1 3 0 4 0 6 ) 这是一道流传很广的趣味数学问题 ...
- python猴子分桃_猴子分桃 - Ryan in C++ - 博客园
猴子分桃的故事大体有两种描述: 描述 1 :五只猴子分桃.半夜,第一只猴子先起来,它把桃分成了个数相等的五堆,多出一只:于是,它吃掉了一个,拿走了一堆.第二只猴子起来一看,只有四堆桃,于是把四堆合在一 ...
- c语言分桃分题设计思路,C语言实现的猴子分桃问题算法解决方案
本文实例讲述了C语言实现的猴子分桃问题算法.分享给大家供大家参考,具体如下: 问题: 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份 ...
- java海滩上有一,Java猴子分桃问题--三种算法
海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五分,多了一个,这只猴子把多的一个扔入海中,拿走了一份,第二只猴子把剩下的桃子又平均分成 五分,又多了一个,他同样把多的一个扔入海中,拿走了 ...
- java猴子分桃问题_通俗易懂、简单粗暴得解决猴子分桃问题
起因 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子分为五份,多了一个,这只猴子把多的一个仍入海中,拿走了一份.第二只猴子把剩下的桃子平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一 ...
- java猴子分桃_算法——猴子分桃
想做些有关"算法"的练习题,在网上无意间看到了一道很经典的算法题--猴子分桃,于是百度了一下,才发现这道题的相关文档很多很多,但最多的也就是使用C++或者Java来解决这道题,而自 ...
- python猴子分桃子的数学题_小学奥数猴子分桃练习及答案【三篇】
小学奥数猴子分桃练习及答案[三篇] 导读: 本文 小学奥数猴子分桃练习及答案[三篇] ,仅供参考,如果 觉得很不错,欢迎点评和分享. [篇一] 给猴子们分桃子 , 如果每个猴子分 7 个多出 2 个 ...
- 通俗易懂、简单粗暴地解决各类猴子分桃问题
起因 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子分为五份,多了一个,这只猴子把多的一个仍入海中,拿走了一份.第二只猴子把剩下的桃子平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一 ...
- 猴子分桃问题(JAVA实现)
猴子分桃问题(JAVA实现) 题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个 ...
最新文章
- poj 3026 BorgMaze 最小生成树Kruskal、Prim(Prim VS报错待解决
- lvs的dr和nat模式配置备忘
- Unity学习笔记(二)——Unity ML-agents安装与配置(1.9.1)
- [你必须知道的异步编程]——基于任务的异步模式
- 企业微信hook,企业微信软件
- 软件项目经理应具备的素质和条件_项目经理应具备的素质与能力
- HTML 有序列表 字母,HTML之有序列表教程
- GitLab 注册 Runner Registering Runners
- mysql的外文图书_外文数据库
- 中职学计算机专业考本科难吗,国际本科难不难(中职考本科难不难)
- iMeta | ggClusterNet微生物网络分析和可视化保姆级教程
- 计算机制作卡通插画,​电脑制作漫画有哪些方法?
- shader拖尾_插件(一)武器拖尾效果
- 清空回收站如何找回?
- 液冷技术或成服务器散热未来趋势
- PHP 操作redis 详细讲解
- 材料模拟计算超算云平台上线,发布会推出两项优惠政策
- iOS ksyhttpcache音视频缓存
- 那个谷歌的网红扔鸡蛋的题,来看看教科书式的回答
- 公司测试部门来了个00后卷王,老油条感叹真干不过,不过.....
热门文章
- 如何关闭苹果手机自动扣费_如何在苹果手机里APP关闭连续包月续费会员?简单几步,切换自由...
- tp5.1添加定时器任务linux,TP5 用cron实现linux定时任务
- JS事件基础(鼠标事件,键盘事件及默认行为)
- 游侠怎么设置java路径_使用小型虚拟机avian将Java转为本地程序
- FIFA21服务器维护,FIFA21网络连接检测功能怎么用 FIFA21网络连接检测功能详解-游侠网...
- 微软sql服务器是mpp,mpp数据库服务器
- web项目漏洞扫描软件
- 《程序员》9月精彩内容:微信小程序 中国人工智能大会集锦
- Ubuntu上面搭建Java开发环境
- 仰恩大学2004年计算机系,再见,仰恩大学!谢谢你喂饱我的四年青春!