前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >考点:猴子分桃问题,程序员可以将数学逻辑思维转换为编程思维【Python习题07】

考点:猴子分桃问题,程序员可以将数学逻辑思维转换为编程思维【Python习题07】

作者头像
刘金玉编程
发布2021-12-07 15:16:43
7180
发布2021-12-07 15:16:43
举报
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

解题思路:

我们根据我文章中提供的第一种方法来做分析解释。我们可以根据问题最终的求解结果进行假设,将假设的值依次代入到N只猴子的分桃子的方法中。

1.我们先假设有y只桃子,然后代入分桃子的算法中。

2.猴子去桃子的方法是:平均分成N分,结果会多一个。

对应在程序中的判断形式是:y%N==1

只要符合以上判断条件,我们就可以认为这次分桃子是成功的!

最后,我们要注意到的是我们需要将N只猴子的分桃方法,都要符合以上算法,所以我们在本文源代码中提供了一个变量flag用来统计符合算法的次数。

3.按照题目意思,我们必须要所有的猴子都满足 y%N==1的算法,每次剩下的猴子的桃子个数是y=y-1-y//N

4.我们将假设的y值依次从假设的y=26这种情况依次代入程序算法,只要是第一次符合算法条件的y值,就是我们需要求的值。

源代码:

# -*- coding: utf-8 -*-
"""
@File文件    :   ljytest77
@Time创建时间    :    2021/11/25
@Author作者  :   刘金玉
@Contact联系方式 :   selidev@qq.com   编程创造城市 http://bcczcs.com
注:作者信息请保留!否则必究法律责任!
刘金玉编程,编程创造城市!
作者微信号:selidev
作者抖音号:selidev
作者B站:刘金玉编程
微信公众号:编程创造城市
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,
第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
"""
#假设原来有y个桃子
y=26

while True:
    flag=0
    x=y
    for i in range(5):
        if x>1 and x%5==1:
            x=x-1-x//5
            flag+=1

    if flag==5:
        print(y)
        break
    else:
        y+=1


#第二种,借用数学方式才能理解,这里不做解释
# !/usr/bin/python
# -*- coding: UTF-8 -*-

if __name__ == '__main__':
    i = 0
    j = 1
    x = 0
    while (i < 5):
        x = 4 * j
        for i in range(0, 5):
            if (x % 4 != 0):
                break
            else:
                i += 1
            x = (x / 4) * 5 + 1
        j += 1
    print(x)

代码执行结果:

3121

3121.0

此题程序逻辑输出上,最后要注意的是符合怎样的条件后才是我们需要的y值。其它情况都是继续递增假设的y值,直到在代入后符合算法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程创造城市 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档