Python練習題 016:猴子吃桃


【Python練習題 016】 猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。

--------------------------------------------------

這題得倒着推。第10天還沒吃,就剩1個,說明第9天吃完一半再吃1個還剩1個,假設第9天還沒吃之前有桃子p個,可得:p * 1/2 - 1 = 1,可得 p = 4。以此類推,即可手算出。

代碼思路為:第10天還沒吃之前的桃子數量初始化 p = 1,之后從9至1循環9次,根據上述公式反推為 p = (p+1) * 2 可得第1天還沒吃之前的桃子數量。for循環中的print()語句是為了驗證推算過程而增加的。代碼如下:

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個桃子

 

++++++++++++++++++++++++++++++++++++++

題目出處:編程語言入門經典100例【Python版】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM