当前位置 博文首页 > Keven_11的博客:C++题解:多个数的最小公倍数

    Keven_11的博客:C++题解:多个数的最小公倍数

    作者:[db:作者] 时间:2021-08-18 15:50

    ??目录

    题目?

    题解


    题目?

    求?n?个数的最小公倍数。

    输入格式

    第一行一个整数 n?(2≤n≤20)。

    第二行?n?个整数。

    输出格式

    一个整数,表示最小公倍数,数据保证答案不超过int范围。

    输出时每行末尾的多余空格,不影响答案正确性

    要求使用「文件输入输出」的方式解题,输入文件为?lcm.in,输出文件为?lcm.out

    样例输入

    5
    2 4 6 8 10

    样例输出

    120

    题解:

    知识点:数学

    分析:题目比较简单,需要运用公式(a,b)×[a,b]=ab以及欧几里得算法,其实C++有个叫__gcd( , )的函数,可自动求最大公约数

    代码:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int gcd(int a,int b){//欧几里得算法,即辗转相除法,
        if (b==0){
            return a;
        }
        return gcd(b,a%b);
    }
    int main(){
        freopen("lcm.in","r",stdin);
        freopen("lcm.out","w",stdout);
        int n,x=1,a;//注意要初始化x,x即答案
        scanf("%d",&n);
        while (n--){
            scanf("%d",&a);
            x=x/gcd(max(a,x),min(a,x))*a;//注意写法,不然爆int
        }
        printf("%d",x);
        return 0;
    }

    cs
    下一篇:没有了