最大公约数(lcm)
最大公约数(lcm)
https://ac.nowcoder.com/acm/problem/16710
水题
虽然这是个水题,但是还是有一些地方要注意一下,题目说了不能超过ULL的范围,我们都知道求解两个数的最小公倍数就是用a*b/gcd(a,b)。。
但是 !!!
这里不能超过题目给的范围,所以我们就要先相除再相乘,这样处理就不会越界了
第一种解法——利用STL内置函数
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e7 + 10; int prime[maxn], sum[maxn]; int main() { ll a, b; while (~scanf("%lld%lld", &a, &b)) { ll m = __gcd(a, b); printf("%lld\n", a / m * b); } }
第二种写法——手写gcd(推荐)
#include <bits/stdc++.h> using namespace std; typedef unsigned long long ll; const int maxn = 1e7 + 10; int prime[maxn], sum[maxn]; ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } int main() { ll a, b; while (~scanf("%lld%lld", &a, &b)) { ll m = gcd(a, b); printf("%lld\n", a / m * b); } }
牛客课后习题题解 文章被收录于专栏
等待蜕变