原题链接:蓝桥杯2013年第四届真题-核桃的数量
解题思路:
求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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复