算法訓練 最大最小公倍數

最大最小公倍數ios

#include<iostream>
using namespace std;
/*****getlcd()求兩個數的最大公約數**********/ 
long long int getlcd(long long int a, long long int b){
    return (a%b==0?b:getlcd(b, a%b));
}
/****getmc()求三個數的最小公倍數*********/ 
long long int getmc(long long int a, long long int b, long long int c){ 
    long long int t=a*b/getlcd(a, b);
    t=t*c/getlcd(t, c);
    return t;
}
int main(){ 
    int n;
    cin>>n;
    long long int a=1, b=2, c=3, ans=6;
    for(int i=4; i<=n; i++){ //貪心 
        long long int e=getmc(a, b, i);
        long long int f=getmc(a, c, i);
        long long int g=getmc(b, c, i);
        if(e>f&&e>g&&e>ans){
            c=i; ans=e;
        }else if(f>e&&f>g&&f>ans){
            b=i; ans=f;
        }else if(g>e&&g>f&&g>ans){
            a=i; ans=g;
        }
    } 
    cout<<ans<<endl;
    return 0;
}
相關文章
相關標籤/搜索