【两种方法】题解 | #求最小公倍数#

求最小公倍数

http://www.nowcoder.com/questionTerminal/d1205615a0904bc39e9e627e7cb9e899

本题数据范围不大,使用枚举可通过前 5 个点(第六个点会卡 1 ms)

方法一:直接枚举

// 不是满分,谨慎枚举
#include <bits/stdc++.h>
using namespace std;
int main(){
    long long a,b,i;
    cin>>a>>b;
    for(i=1;i%a!=0||i%b!=0;i++){ // 如果 i 不是其中某个数的倍数,就继续枚举
        // 纯枚举,这里什么也不用做
    }
    cout<<i;
    return 0;
}

方法二:两个数的最小公倍数=两个数的乘积÷两个数的最大公约数 (满分)

两个数较大时,可以改为 一个数÷两个数的最大公约数×另一个数,防止溢出。但本题数据范围小,不需要考虑溢出。

#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
    if(b==0)
        return a;
    else
        return gcd(b,a%b);
}
int main(){
    /* 读写优化,新手可忽略
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    */
    long long a,b;
    cin>>a>>b;
    cout<<a*b/gcd(a,b);
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务