东方博宜OJ1335: 【基础】土地分割题解
题目传送门
把一块m*n米的土地分割成同样大的正方形,如果要求没有土地剩余,分割出的正方形土地最大边长是多少米?
可知要求\(\gcd(a,b)\)
数据规模:\(m,n\le10^{18}\)
\(50\)分代码(枚举\(1\sim min(m,n)\)):
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int gans=0;
for(int i=1;i<=min(a,b);i++){
if(a%i==0&&b%i==0){//判断是否整除
gans=i;
}
}
cout<<gans;
return 0;
}
辗转相除法递归版:如果a%b==0就返回b,否则返回dg(b,a%b)
\(100\)分代码(辗转相除法):
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
void dg(long long m,long long n){//辗转相除法
if(m%n==0){
cout<<n;//输出
return;
}
dg(n,m%n);
}
int main(){
long long m,n;
cin>>m>>n;
dg(m,n);//调用
return 0;
}

浙公网安备 33010602011771号