首页 > 试题广场 >

最小众倍数

[编程题]最小众倍数
  • 热度指数:4169 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定5个正整数, 它们的最小的众倍数是指的能够被其中至少三个数整除的最小正整数。 给定5个不同的正整数, 请计算输出它们的最小众倍数。

输入描述:
输入包括一行,一行中有五个各不相同的正整数a, b, c, d, e(1 ≤ a, b, c, d, e ≤ 100), 以空格分割


输出描述:
输出一个整数,表示它们的最小众倍数
示例1

输入

1 2 3 4 5

输出

4
package main

import (
    "fmt"
    "math"
)

func main() {
    arr:=make([]int,5)
    for i:=0;i<5;i++{
        fmt.Scan(&arr[i])
    }
    ans:=math.MaxInt32
    var dfs func([]int,int)
    dfs=func(path []int,idx int){
        if len(path)>=3{
            if len(path)>3{
                return
            }
            x:=f(path[0],path[1],path[2])
            if x<ans{
                ans=x
            }
            return
        }
        for i:=idx;i<5;i++{
            path=append(path,arr[i])
            dfs(path,i+1)
            path=path[:len(path)-1]
        }
    }
    dfs([]int{},0)
    fmt.Print(ans)
}

func f(a,b,c int)int{
    basic:=max(a,max(b,c))
    for i:=basic;;i++{
        if i%a==0&&i%b==0&&i%c==0{
            return i
        }
    }
    return basic
}

func max(a,b int)int{
    if a>b{
        return a
    }
    return b
}

发表于 2023-03-20 13:48:59 回复(0)