历年试题 PREV-1 核桃的数量
题目:传送门
解析:
分析题目易知,本题求输入的三个数的最小公倍数。又知道最小公倍数和最大公约数对的关系公式:
[
a
,
b
]
(
a
,
b
)
=
∣
a
b
∣
[a,b](a,b)=|ab|
[a,b](a,b)=∣ab∣1
因此使用辗转相除法求最大公约数再求最小公倍数。
解答:
#include <iostream>
using namespace std;
int gcd(int m, int n)
{
int r;
while ((r = m % n) != 0)
{
m = n; n = r;
}
return n;
}
int lcm(int m, int n)
{
return (m*n) / gcd(m, n);
}
int main()
{
int a, b, c;
while (cin >> a >> b >> c)
{
int ans = lcm(c, lcm(a, b));
cout << ans << endl;
}
return 0;
}
更多内容欢迎参观我的个人站
[a,b]表示a,b的最小公倍数;(a,b)为a,b的最大公约数;|ab|为a,b的乘积的绝对值。 ↩︎