python猴子分桃_Python 五猴分桃.py问题解答代码

时间: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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值