题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
思路:可以从第五个猴子开始,从后往前推。最后一个猴子分成五份还多一个,假设最后一个猴子拿1个桃,最后至少有5*1+1=6个桃子。
请你试一试,编写程序计算原来有多少个桃子。
#题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份, #多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份, #又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, #问海滩上原来最少有多少个桃子? #思路:可以从第五个猴子开始,从后往前推。最后一个猴子分成五份还多一个,假设最后一个猴子拿1个桃,最后至少有5*1+1=6个桃子。 i=1 #第5只猴子拿走的桃子的个数 count = 0 #海滩上剩下的桃子数 while True: count= i*5+1 #第5只拿之前,海滩上剩下的桃子数 for j in range(0,4): #推断第4、3、2、1只猴子情况 if count % 4 !=0: #剩下的桃子数必须能被4整除 flag = False #flag用来判断本次i的取值尝试是否成功,不成功就继续尝试 i += 1 break else: count = (count/4)*5+1 flag = True if flag == True: print(count) print(i) break
运行结果:
3121.0
255