8619 公约公倍

这个问题可以通过计算最大公约数 (GCD) 和最小公倍数 (LCM) 来解决。我们需要找到一个整数,它是 a, b, c 的 GCD 的倍数,同时也是 d, e, f 的 LCM 的约数。

以下是解决这个问题的步骤:

1. 计算 a, b, c 的最大公约数。
2. 计算 d, e, f 的最小公倍数。
3. 检查是否存在一个整数,它是步骤 1 中得到的 GCD 的倍数,同时也是步骤 2 中得到的 LCM 的约数。

以下是实现这个算法的 C++ 代码:

#include <iostream>
#include <algorithm>

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

int lcm(int a, int b) {
    return a / gcd(a, b) * b;
}

int main() {
    int a, b, c, d, e, f;
    while (std::cin >> a >> b >> c >> d >> e >> f && (a || b || c || d || e || f)) {
        int gcd_abc = gcd(gcd(a, b), c);
        int lcm_def = lcm(lcm(d, e), f);
        if (lcm_def % gcd_abc == 0) {
            std::cout << "YES" << std::endl;
        } else {
            std::cout << "NO" << std::endl;
        }
    }
    return 0;
}

这段代码首先定义了两个函数:gcd 和 lcm,分别用于计算两个数的最大公约数和最小公倍数。然后在主函数中,我们读取输入,计算 a, b, c 的最大公约数和 d, e, f 的最小公倍数,然后检查是否存在一个整数,它是最大公约数的倍数,同时也是最小公倍数的约数。如果存在,我们输出 "YES",否则输出 "NO"。

  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值