suxxsfe

一言(ヒトコト)

东方博宜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;
}
posted @ 2021-07-28 09:09  卫道士qwq  阅读(2638)  评论(0)    收藏  举报