首页 > 其他分享 >超级码力初赛第三场 最大公倍数 题解

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

时间:2023-04-15 22:34:20浏览次数:37  
标签:return 公倍数 题解 最小 len aim range 初赛

题目描述

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

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

示例

  • 示例 1:

    输入:  a = 3, b = 6
    输出: 60
    样例解释: 4,5,6的最小公倍数是60
    
    

    来源:九章算法


  • 解题思路

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

    暴力枚举要避免超时。

  • 题解1:

    执行用时:56

    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]
    

标签:return,公倍数,题解,最小,len,aim,range,初赛
From: https://blog.51cto.com/spaceack/6192471

相关文章

  • windows pip问题解决(working)
    当pip无法起效时,尝试python-mpippython-mpip会使用您指定为python的Python解释器来执行pip。因此,/usr/bin/python3.7-mpip表示您正在执行位于/usr/bin/python3.7的解释器的pip。如果您不熟悉这个标志以及它是如何工作的,您可以阅读有关-m的文档......
  • git 遇到的CApath: none问题解决
    在适应git时,遇到了如下问题。fatal:unabletoaccess'https://github.com/brunosimon/folio-2019.git/':errorsettingcertificateverifylocations: CAfile:D:/明月下/Git/mingw64/ssl/certs/ca-bundle.crtCApath:none第一反应是查找这个文件是什么,在不在。首先这......
  • [P4317 花神的数论题]题解
    P4317花神的数论题【数位DP】题目描述最开始其实没有什么想法第一次遇见数位dp求相乘的题想就按照常规做法来做,但不知道如何去处理*于是写了一个错误的代码//当前枚举到第id位,前面的1的个数为sum,是否达到上限limitlldfs(intid,intsum,intlimit){//1.出口if(id==......
  • CF1592F2 题解
    题意传送门给定一个\(n\)行\(m\)列的目标矩阵,矩阵元素只有W或B,并且你有一个初始矩阵,元素全为W。现在你可以矩阵实施以下操作:使用一块钱,选定一个包含\((1,1)\)的子矩阵,把矩阵中的元素全部反转(W变B,B变W)。使用三块钱,选定一个包含\((n,1)\)的子矩阵,把矩阵......
  • Luogu_P1613 跑路 题解
    发现和最短路差不多,不过不能朴素的跑最短路。考虑对于每两个相隔\(2\)的整数次幂的点建边,在这个新图上跑最短路就是答案。设\(f_{i,j,k}\)表示从点\(i\)跳\(2^k\)步能否到点\(j\),转移方程就是一个普通的倍增。如果点\(i\)和点\(j\)可以一步到达,那么就在新图上建一条......
  • ABC249F 题解
    前言题目传送门!更好的阅读体验?很好玩的贪心。思路如果第\(i\)次操作为覆盖操作,那么\(1\simi-1\)次操作都是无效的,原因显然。这启示我们从后往前扫(前面的会被忽略,后面的不会啊!)。在此基础上,就是分类讨论一下(假设当前的最大答案为\(sum\)):当前操作是覆盖操作:如果不......
  • 【题解】Tree MST
    题面给定一棵\(n\)个节点的树,现有有一张完全图,两点\(x,y\)之间的边长为\(w_x+w_y+dis_{x,y}\),其中\(dis\)表示树上两点的距离。求完全图的最小生成树。\(n\leq2\times10^5\)。题解???神秘借鉴支配对的思想,点分治后将树中点权替换为\(dep_i+w_i\),选择点权最小的一个......
  • [ABC296Ex] Unite 题解
    考虑状压dp。设\(f_{i,j,s}\)表示当前正在决策坐标为\((i,j)\)的格子,且列状态为\(s\)。其中列状态维护了当前轮廓线上的连通块,我们可以使用最小表示法来简单维护。(为什么不用广义括号序列?因为其涉及到\(5\)个可选值,由于\(m\le7\),所以这两个都需要用到八进制,而最小表示......
  • [Educational Codeforces Round 118 (Rated for Div. 2)]题解
    A题意:给定两个数,每一个数有两个属性,第一个属性是p1,第二个属性是p2.表示这个数有p2个后缀0.这个数本身等于p1后面加p2个0.问给你两个这种数,判断大小。思路:赛场上想到的:如果最终的长度不一样,可以直接根据长度判断。如果相等,就把后缀0加上直接比较大小就可以(比较字典序的大小),但......
  • 2012-2013 ACM-ICPC, NEERC, Moscow Subregional Contest题解
    题目链接:2012-2013ACM-ICPC,NEERC,MoscowSubregionalContestC.Cinderella(贪心)思路答案为大于平均值的数的数量代码#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);......