前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法创作|核桃的数量问题解决方法

算法创作|核桃的数量问题解决方法

作者头像
算法与编程之美
发布2021-03-30 14:44:02
3680
发布2021-03-30 14:44:02
举报

问题描述

小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班。为鼓舞士气,小张打算给每个组发一袋核桃(据传言核桃能补脑),他的要求是:

各组的核桃数量必须相同

各组内能平分核桃(不能打碎)

尽量提供满足(1)(2)条件的最小数量

输入包含三个正整数a,b,c表示每个组正在加班的人数,用空格分

开(a,b,c<30),输出一个正整数,表示每袋核桃的数量

解决方案

显然,我们用数学的思维看待这个问题,实际上就是数学上求解三个数最小公倍数的过程,那么如何求解三个数的最小公倍数呢?首先,我们要求出两个数的最大公因数,这就要运用到欧几里得算法(即辗转相除法),求出两数的最大公约数之后,我们再用图示代码求出三个数的最小公倍数。

求解三个数的最小公倍数示例代码

代码语言:javascript
复制
def zhanzhuanxiangchufa(a,  b):

    while(b!=0):

        temp = a % b

        a = b

        b = temp

    return a            #求两个数的最大公约数

def gongbeishu(a,b):

return  int((a*b)/zhanzhuanxiangchufa(a,b))

#求最小公倍数

a,b,c  =map(int,input().split()) #读入三个数

hetaoshuliang=gongbeishu(gongbeishu(a,b),c)

print(hetaoshuliang)  #求解核桃数量

结语

本篇文章主要是解决三个数求解最小公倍数的问题,用到了数学当中的辗转相除法。此道蓝桥杯真题告诉我们在遇到问题时必须要将它分步求解,首先要认真审题,将题目化抽象为具体,上述问题我们将生活中的实际问题转化为数学问题,将它具体化,然后再联系平时学过的已有知识进行求解。该解法仅代表个人观点,可能还有其它更加便捷的求解方式,希望此解法能够给读者带来帮助,如果上述观点有任何不足之处,欢迎广大读者能够指正。

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

本文分享自 算法与编程之美 微信公众号,前往查看

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

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

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