题解 | #更相减损术#

更相减损术

https://ac.nowcoder.com/acm/problem/22164

使用 STL,不符合题目要求

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b;
    cin>>a>>b;
    cout<<__gcd(a,b);

}

自己实现一个 gcd(),内含三目运算符

但是这个还是不符合要求,因为用的是辗转相除法

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
    return b?gcd(b,a%b):a;
}
int main(){
    int a,b;
    cin>>a>>b;
    cout<<gcd(a,b);
}

符合要求的正解

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
    if(a==b) return a;
    if(a>b) return gcd(a-b,b);
    return gcd(b-a,a);
}
int main(){
    int a,b;
    cin>>a>>b;
    cout<<gcd(a,b);
}

这个在输入的数字较小的时候跑起来反而更慢些,而辗转相除法因为用到取模遇到大数时会慢些,个人认为还是前者更为实用。

题解 文章被收录于专栏

https://ayx.moefox.tech/

全部评论

相关推荐

03-31 14:46
已编辑
门头沟学院 Web前端
励志成为双港第一ja...:这其实很正常,离的太远了,他认为你不会来,就为了混个面试,而且成本很高,实习生都优先选本地高校。吃了地域的亏,所有很多时候地域可能比院校层次更重要。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务