题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
思路:可以从第五个猴子开始,从后往前推。最后一个猴子分成五份还多一个,假设最后一个猴子拿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)
本站内容未经许可,禁止任何网站及个人进行转载。