水题

虽然这是个水题,但是还是有一些地方要注意一下,题目说了不能超过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);
    }
}