python3 猴子吃桃

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

思路:
day10 ==1
day09 ==? A-A/2-1=1, A/2=2, 算出 A=4
day08 ==? B-B/2-1=4; B/2=5, 算出:B=10
day07 ==? C-C/2-1=10, C/2=11, 算出:C=22
day06 ==? D-D/2-1=22, D/2=23, 算出:D=46
day05 ==? E-E/2-1=46, E/2=47, 算出:E=94
day04 ==? F-F/2-1=94, F/2=95, 算出:F=190
day03 ==? G-G/2-1=190, G/2=191, 算出:G=382
day02 ==? H-H/2-1=382, H/2=383, 算出:H=766
day01 ==? I-I/2-1=766, I/2=767, 算出:I=1524
由上面第三项公式,可以结论可以推出:
day10=1
day09=2*(day10+1)
day08=2*(day09+1)
day07=2*(day08+1)
day06=2*(day07+1)
day05=2*(day06+1)
day04=2*(day05+1)
day03=2*(day04+1)
day02=2*(day03+1)
day01=2*(day02+1)
由此假设:
day10=1=p
day09=2*(p+1)
day08=2*[2*(p+1)+1]

`以此类推,公式为:p=2*(p+1), 之后循环9次,代码如下:

p = 1
print('第10天剩1个桃子')
for i in range(9, 0, -1):
    p = (p+1) * 2
    print('第%s天还有%s个桃子' % (i, p))
print('第1天共摘了%s个桃子' % p)

运行结果:

第10天剩1个桃子
第9天还有4个桃子
第8天还有10个桃子
第7天还有22个桃子
第6天还有46个桃子
第5天还有94个桃子
第4天还有190个桃子
第3天还有382个桃子
第2天还有766个桃子
第1天还有1534个桃子
第1天共摘了1534个桃子
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值