最大公约数(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);
    }
}
牛客课后习题题解 文章被收录于专栏

等待蜕变

全部评论

相关推荐

评论
2
收藏
分享
牛客网
牛客企业服务