当前位置: 首页 > news >正文

猴子吃桃问题(python版)

文章预览:

  • 题目
  • python解法一:
    • 运行结果
  • python解法二:
    • 运行结果
  • python解法三:
    • 运行结果

题目

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求原来它一共摘了多少只桃子。

这是一个比较简单的python习题。

python解法一:

我们从后往前想,最后一次不就剩1个了吗,那么前一天剩多少个 和容易想到2*1+2,那么我们倒序想 就是 a n + 1 = 2 ∗ a n + 2 a_{n+1}=2*a_n+2 an+1=2an+2

def count(day):a=1for i in range(day-1):a=a*2+2return a
print("第10天共摘了{}桃子".format(count(10)))

运行结果

第10天共摘了1534桃子

python解法二:

我们可以使用递归的办法,每次减小天数,天数为1的时候是1
代码如下:

def  monkey_count(day):if day==1:return 1else:return  2*monkey_count(day-1)+2print("第{}天剩一个那总共有{}".format(10,monkey_count(10)))

运行结果

第10天剩一个那总共有1534

python解法三:

让我们算最终解法:复杂度最低的算法,我们干嘛不寻找规律完全解出这个通项岂不美哉。
在这里插入图片描述
由上面我们推导出了公式 a n = 3 / 2 ∗ 2 n − 2 a_n=3/2*2^n-2 an=3/22n2
那编程就容易多了
代码如下:

a=int(input())
count=3*2**(a-1)-2
print("第{}天剩一个那总共有{}".format(a,count))

运行结果

输入10
第10天剩一个那总共有1534

http://www.lryc.cn/news/310811.html

相关文章:

  • C语言入门到精通之练习49:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的 *。
  • 如何在Windows轻量应用服务器上安装和配置SSH?
  • leetcode日记(36)全排列
  • Flink:动态表 / 时态表 / 版本表 / 普通表 概念区别澄清
  • 异常网络下TCP的可靠服务机制(慢启动、拥塞避免、快重传、快恢复)
  • PL/SQL执行.sql文件
  • 赋能中国制造,大道云行发布智能制造分布式存储解决方案
  • MySQL Strict Mode is not set for database connection ‘default‘
  • 分享:大数据信用报告查询的价格一般要多少钱?
  • tomcat下载安装配置教程
  • GO—变量
  • 【计算机毕业设计】044学生管理系统
  • 揭秘App访问量背后的秘密:数据统计与分析
  • Qt 样式表
  • leetcode hot100 每日温度
  • 【Java EE初阶二十六】简单的表白墙(二)
  • 【wpf】关于绑定的一点明悟
  • 叠罗汉游戏
  • 太阳能风吸式杀虫灯是什么
  • SpringBoot启动扩展应用:干预优化+加快启动时间
  • 探索Linux世界:初次接触和基本指令(文件操作)
  • 递归函数(c++题解)
  • Qt将Unicode转换成UTF8中文
  • HTTP 的 multipart 类型
  • 【NR 定位】3GPP NR Positioning 5G定位标准解读(二)
  • 为何代理IP的稳定性不如有线IP?
  • 【c++】 string类的模拟实现
  • transformer--transformer模型构建和测试
  • 从0到1全流程使用 segment-anything
  • Window系统部署Splunk Enterprise并结合内网穿透实现远程访问本地服务