1 条题解

  • 0
    @ 2026-5-8 10:49:28

    题解文字教学

    求三个数的最大公约数,可以利用欧几里得算法(辗转相除法)逐步求解。两个数的最大公约数定义为 gcd(a, b),通过不断取模计算:当 b != 0 时,将 a 替换为 bb 替换为 a % b;最终 a 即为 gcd(a, b)。三个数的最大公约数可以表示为 gcd(gcd(x, y), z),即先求 xy 的最大公约数,再用该结果与 z 求最大公约数。由于输入数据在 10^6 以内,简单的 int 类型即可安全计算。


    参考代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int gcd(int a, int b) {
        while (b) {
            int t = a % b;
            a = b;
            b = t;
        }
        return a;
    }
    
    int main() {
        int x, y, z;
        cin >> x >> y >> z;
        int g = gcd(gcd(x, y), z);
        cout << g << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    8417
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    10
    已通过
    6
    上传者