👻

[c++] 競プロ典型90問 038 Large LCM(★3)

2022/10/15に公開

(問題ページ)
https://atcoder.jp/contests/typical90/tasks/typical90_al


求めたlcm(変数ans)がオーバーフローしてないかどうか判断するために、
A, Bで割り切れるかどうかチェックするようにしました

    if (ans % A == 0 && ans % B == 0 && ans <= 1000000000000000000) {

code

#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
#include <math.h>
#include <numeric>
#include <algorithm>


long long calc_gcd(long long a, long long b) {
    long long tmp;
    while (b != 0) {
        tmp = a;
        a = b;
        b = tmp % b;
    }
    return a;
}

long long calc_lcm(long long a, long long b){
    return a / calc_gcd(a, b) * b;
}


int main() {
    long long A, B;
    cin >> A >> B;

    long long ans = calc_lcm(A, B);

    if (ans % A == 0 && ans % B == 0 && ans <= 1000000000000000000) {
        printf("%lld\n", ans);
    } else {
        printf("Large\n");
    }
}

Discussion