題目:海灘上有一堆桃子,五只猴子來分.第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?

思路:可以從第五個猴子開始,從后往前推。最后一個猴子分成五份還多一個,假設最后一個猴子拿1個桃,最后至少有5*1+1=6個桃子。

請你試一試,編寫程序計算原來有多少個桃子。


參考答案思路及程序代碼:

假設第五只猴子拿走j個桃,那么最后海灘上還剩x個桃,x=4*j,開始倒推,第五只猴子沒拿之前海灘上就有x/4*5+1個桃子。

根據這個思路,我們從j=1開始,反推每只猴子拿桃之前海灘上桃子的個數,這個數需要滿足一個條件就是能被4整除(上一只猴子拿走之后剩下的均分了4等份)如果每次桃子的個數都滿足,那么就得到了結果。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

if __name__ == '__main__':

   i = 0 #控制循環次數,(第五只到第一只)

   j = 1 #最后一個猴子拿走的桃子個數

   x = 0 #剩下的桃子個數

   while (i < 5) :

       x = 4 * j #第五只猴拿走后海灘剩下桃的個數

       for i in range(0,5) :

           if(x%4 != 0) :

               break

           else :

               i += 1

           x = x/4 * 5 +1 #上一只猴拿走后海灘剩下桃的個數

       j += 1

   print (x)


本站內容未經許可,禁止任何網站及個人進行轉載。