代码
'''
猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第五天早上想再吃时,只剩下一个桃子了。问第一天猴子摘了多少个桃子。
解析:若第一天摘 x 个,剩下 n1 个,则第一天剩下 n1 = x/2 - 1 个,x = (n1 + 1) * 2, 同理 n1 = (n2 + 1) * 2, ...,
n4 = (n5 + 1) * 2, n5 = 1.
@Ref 2017.Python语言程序设计基础.第2版.嵩天, p30
@Version: v0.1, Python 3.9.5, Notus(hehe_xiao@qq.com), 2021.05.27
@Updated: 2021.05.27
'''
n = 1 # 第 n 天的开始时的桃子数,第 5 天为 1
for i in range(5, 1, -1): # i 表示天数,用来计算前一天 (即第 i - 1) 开始时的桃子数, 范围从 5 ~ 2。
n = (n + 1) << 1 # 第 i - 1 天开始时的桃子数为 (n + 1) * 2 即 (n + 1) << 1 (第一次由第 5 天开始时的桃子数计算第 4 天开始时的桃子数)
print(n)
Output
46