解题思路:
    求a1,a2,...,an的最小公倍数,可以求a1,a2的最小公倍数b1,再求b1,a3的最小公倍数b2,...,直到求出b(n-2),an的最小公倍数b(n-1),则b(n-1)是a1,a2,...,an的最小公倍数

    这个算法不是自己想出来的,在 https://www.zhihu.com/question/40317094 有一个回答点明了这个思路

    不过应该有更优算法我还没有掌握


注意事项:





参考代码:

/*
 * 1446.c
 *
 *  Created on: 2018年2月27日
 *      Author: susu
 */

#include<stdio.h>
#include<math.h>


// 最大公约数 Greatest Common Divisor(GCD)
int FindGCD(int a, int b) {
    int r, tmp;
    if(b > a) {
        tmp = a;
        a = b;
        b = tmp;
    }
    r = a % b;
    while(r != 0) {
        a = b;
        b = r;
        r = a % b;
    }

    return b;
}

// 最小公倍数 Least Common Multiple(LCM)
int FindLCM(int a, int b ) {
    int r;
    r = a * b / FindGCD(a, b);
    return r;
}

int main() {
    int a1, a2, a3;
    scanf("%d%d%d", &a1, &a2, &a3);
    int b1 = FindLCM(a1, a2);
    int b2 = FindLCM(b1, a3);

    printf("%d\n", b2);

    return 0;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论