2 条题解

  • 1
    @ 2026-3-17 17:11:00
            #include<bits/stdc++.h>
            using namespace std;
            int a,b;
            int main(){
                cin>>a>>b;
                cout<<__gcd(a,b);
                return 0;
            }
    

    这里用了c++函数__gcd(a,b); 跟楼下一样也能AC。

    • -1
      @ 2025-10-30 16:50:30

      思路分析

      1. 任务拆解:

      • 读取两个正整数a和b
      • 计算它们的最大公约数
      • 输出结果

      2. 关键点分析:

      • 使用辗转相除法(欧几里得算法)
      • 算法原理:gcd(a,b) = gcd(b, a mod b)
      • 当余数为0时,当前的除数就是最大公约数

      3. 步骤规划:

      • 读取a和b的值
      • 循环计算:
        • 计算a除以b的余数
        • 如果余数为0,结束循环
        • 否则将b赋值给a,余数赋值给b
      • 输出b作为最大公约数

      4. 代码对应:

      • cin>>a>>b; → 读取两个整数
      • while(true) → 辗转相除循环
      • int y=a%b; → 计算余数
      • if(y==0) break; → 余数为0时结束循环
      • a=b; b=y; → 更新a和b的值
      • cout<<b; → 输出最大公约数
      • 1

      信息

      ID
      1818
      时间
      1000ms
      内存
      256MiB
      难度
      3
      标签
      (无)
      递交数
      238
      已通过
      122
      上传者