当前位置: 首页 > 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=1
    for i in range(day-1):
        a=a*2+2
    return a
print("第10天共摘了{}桃子".format(count(10)))

运行结果

第10天共摘了1534桃子

python解法二:

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

def  monkey_count(day):
    if day==1:
        return 1
    else:
        return  2*monkey_count(day-1)+2
    
print("第{}天剩一个那总共有{}".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

相关文章:

  • (学习日记)2024.03.03:UCOSIII第五节:常用汇编指令+OS初始化+启动任务+任务切换
  • 算法:动态规划
  • SAP PP学习笔记04 - BOM2 -通过Serial来做简单的BOM变式配置,副明细,BOM状态,BOM明细状态,项目种类,递归BOM
  • 在java java.util.Date 已知逝去时间怎么求年月日 数学计算不用其他方法
  • 命名空间(namespace)
  • nginx使用详解--动静分离
  • 每天学习2小时——黑客(网络安全)技术
  • [LeetBook]【学习日记】寻找链表相交节点
  • day57 集合 List Set Map
  • 服务器git安装python包失败,如何手动下载github项目包并安装到虚拟环境中(简单易懂)
  • 【JavaScript 漫游】【029】GlobalEventHandlers 接口总结
  • 在Spring Boot中如何实现异常处理?
  • 云计算 2月28号 (linux的磁盘分区)
  • LeetCode-第14题-最长公共前缀
  • nextjs13如何进行服务端渲染?
  • wordpress 开源主题
  • k8s学习-数据管理之nfs手动搭建
  • 基于JavaWEB SpringBoot婚纱影楼摄影预约网站设计和实现
  • Timeplus-proton流处理器调研
  • 自动驾驶加速落地,激光雷达放量可期(上)
  • 航海王亚洲巡展、工厂店直销……上海多区推出“五五购物节”活动
  • 先去上海后赴北京,苏中城市泰州为何接连拥抱顶流“大城”?
  • 武汉楼市新政:二孩、三孩家庭购买新房可分别享受6万元、12万元购房补贴
  • 湖北鄂州通报4所小学学生呕吐腹泻:供餐企业负责人被采取强制措施
  • 制定出台民营经济促进法有何重大意义?全国人大常委会法工委回应
  • 海口市政协党组成员、秘书长、机关党组书记汪娟被查