ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

五人分鱼--基于python3.0

2021-09-13 15:32:50  阅读:361  来源: 互联网

标签:五份 五人 -- fish 分鱼 拿走 enough total


A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。

C、D、E依次醒来,也按同样的方法拿鱼。

问他们至少捕了多少条鱼?

问题分析:

每个人按照以下规则分鱼并拿走自己的那一份:

A:(x-1)/5
B:(x-((x-1)/5)-1)/5
C:(x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5
D:(x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-1)
E:(x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-1))-1)

问题转化为从1开始寻找一个可以满足上述规则的最小整数

def main():
    #默认鱼的数量至少是一条
    fish = 1
    while True:
        total,enough = fish,True
        #五个人都按照这样的规则来分鱼
        for _ in range(5):
            #如果扔掉一条鱼后恰好可以分为五份
            if (total-1)%5 == 0:
                #扔掉一条鱼,然后分为五份,拿走自己的那一份
                total = (total-1)//5*4 #运算过后的total的值是此次进行分配的人拿走自己的那一份之后剩下的
            #如果这个人按照这种方法不够分,说明不满足规则
            else:
                enough = False
                break

        #如果够分,输出鱼的总数
        if enough:
            print("鱼的总数是",fish)
            break
        #每一次循环,鱼的数量都增加1来寻找满足规则的最小值
        else:
            fish+=1
main()

        

标签:五份,五人,--,fish,分鱼,拿走,enough,total
来源: https://blog.csdn.net/wh90306/article/details/120267376

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有