前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超级码力初赛第三场 最大公倍数

超级码力初赛第三场 最大公倍数

作者头像
Spaceack
发布2020-11-04 14:34:19
3050
发布2020-11-04 14:34:19
举报
文章被收录于专栏:编程使我快乐

题目描述

小栖有一个区间[a,b],他准备从中取三个数,他想知道如何取才能使得它们的最小公倍数最大 请直接告诉小栖最小公倍数是多少。

1<=a<b<=5000 b-a >= 2

示例

示例 1:

代码语言:javascript
复制
输入:  a = 3, b = 6
输出: 60
样例解释: 4,5,6的最小公倍数是60

来源:九章算法


解题思路

每三个数为一组, 算出三个数的最小公倍数,加入到数组排序, 选出最大即可。

暴力枚举要避免超时。

题解1:

执行用时:56

代码语言:javascript
复制
class Solution:
"""
@param a: Left margin
@param b: Right margin
@return: return the greatest common multiple
"""
def greatestcommonmultiple(self, a, b):
    # write your code here
    def get_max_yinshu(x, y):
        while (True):
            if (x < y):
                x, y = y, x
            if (x % y == 0):
                return int(y)
            else:
                temp = x % y
                x = y
                y = temp
    tmp = []
    aim = list(range(a, b + 1))
    # 避免超时
    if len(aim) > 6:
        aim = aim[-1:-6:-1]
    for x in range(len(aim)):
        for y in range(len(aim)):
            for z in range(len(aim)):
                a = aim[x]
                b = aim[y]
                c = aim[z]
                if a != b != c:
                    if a<b<c:
                        a_b = get_max_yinshu(a, b)
                        a_b = int((a * b) / a_b)
                        result = get_max_yinshu(a_b, c)
                        result = int((a_b * c) / result)
                        tmp.append(result)
    tmp.sort()
    return tmp[-1]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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