时间:2019-01-09
概述:五猴分桃
海滩上有一堆桃子,n只猴子来分。第一只猴子把这堆桃子凭据分为n份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成n份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四。。第n只猴子都是这样做的,问海滩上原来最少有多少个桃子?
def howmany(n): #n代表猴子的个数,!!!最多到8,超过会很慢很慢很慢!!!
ps=1 #桃子总数,从1开始试验
while True:
ms=[] #猴子得到桃子数的列表
p=ps
for i in range(n):
if (p-1)%n==0 and (p-1)>0: #如果桃子数-1个后能被n整除
m=(p-1)//n
ms.append(m)
p=p-1-m
else:
break
else:
for x,y in enumerate(ms,1):
print('猴子{}得到{}个桃子'.format(x,y))
print('共有{}个桃子'.format(ps))
break
ps+=1
n=int(input('请输入猴子数:'))
if n>8:
if 'y'==input('这个数太大了,会花很长很长时间,确定吗(y)?'):
print('您真倔强,请等1个小时再来看看吧。(如果没完成就再多等几个小时)')
howmany(n)
else:
print('您真明智,请重新运行程序,输入小一点的数吧。')
else:
howmany(n)