5.2 最大公约数与最小公倍数
5.2 最大公约数与最小公倍数
http://codeup.hustoj.com/contest.php?cid=100000589
A Least Common Multiple
题目释义
求n个数的最小公倍数。
第一行输入m表示样例数目,接下来m行为各个具体样例;
第二行输入n表示此样例中数字个数,接下来n个为具体数字。需求这n个数的最小公倍数。
题目解析
求n个数的最小公倍数——前两个数a、b求最小公倍数c,再将c与第三个数d求最小公倍数,······
Small Tips:为了代码书写方便,且避免只有一个数的情况,可预存一个数1,任何数与1的最小公倍数都是这个数本身。
⚠️n可能为1。此时最小公倍数即输入的那个唯一的数。
代码1(自己写的)
#include <cstdio>
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int main() {
int m, n;
int a, b;
scanf("%d", &m);
while (m--) {
scanf("%d", &n);
if (n == 1) {
scanf("%d", &a);
printf("%d\n", a);
} else {
scanf("%d %d", &a, &b);
a = a / gcd(a, b) * b;
for (int i = 3; i <= n; i++) {
scanf("%d", &b);
a = a / gcd(a, b) * b;
}
printf("%d\n", a);
}
}
return 0;
}
代码2(根据tips)
#include <cstdio>
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int main() {
int m, n;
int a, b;
scanf("%d", &m);
while (m--) {
scanf("%d", &n);
a = 1;
for (int i = 0; i < n; i++) {
scanf("%d", &b);
a = a / gcd(a, b) * b;
}
printf("%d\n",a);
}
return 0;
}

浙公网安备 33010602011771号