当前位置: 源码素材网 » 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)

    相关声明:

      若“Python 五猴分桃.py问题解答代码”有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。