东方博宜OJ 1335:土地分割 ← 递归求“最大公约数”

【题目来源】
https://oj.czos.cn/p/1335

【题目描述】
把一块 m*n 米的土地分割成同样大的正方形,如果要求没有土地剩余,分割出的正方形土地最大边长是多少米?(最少不能少于1米*1米)
如:一块6米*4米的土地,能够分割的最大的正方形的边长为2米。

【输入格式】
两个整数 m 和 n(m,n≤10^18)

【输出格式】
能够分割的最大正方形的边长。

【输入样例】
6 4

【输出样例】
2

【数据范围】
m,n≤10^18

【算法分析】
● 通过分析,本题本质上是求“最大公约数”。
●​​​​​​​ 本题中,m,n 的值达到了 10^18,所以它们的数据类型需设为 long long 型。若设为 int 型,会得不到正确答案。

【算法代码】

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

LL gcd(LL a,LL b) {
    if(b==0) return a;
    return gcd(b,a%b);
}

int main() {
    LL a,b;
    cin>>a>>b;
    cout<<gcd(a,b);

    return 0;
}

/*
in:6 4
out:2
*/




【参考文献】
https://oj.czos.cn/p/1335
https://blog.csdn.net/hnjzsyjyj/article/details/156192874
https://blog.csdn.net/hnjzsyjyj/article/details/156182882
https://blog.csdn.net/hnjzsyjyj/article/details/156185382




 

posted @ 2025-12-23 21:00  Triwa  阅读(2)  评论(0)    收藏  举报