藍橋杯 最大最小公倍數

                                                                                                           算法訓練  最大最小公倍數
問題描述

已知一個正整數N,問從1~N中任選出三個數,他們的最小公倍數最大可以爲多少。

輸入格式

輸入一個正整數N。

輸出格式
輸出一個整數,表示你找到的最小公倍數。
樣例輸入
9
樣例輸出
504
數據規模與約定

1 <= N <= 106


注:貪心,從最大的三個數開始考慮,如果最大的數爲奇數,那麼相鄰的三個數中有兩個奇數,最大公約數爲1,最小公倍數就爲n*(n-1)*(n-2). 如果爲偶數,那麼往後移,考慮n*(n-1)*(n-3),這時n和n-3相差3,式子滿足條件的前提是n不能被3整除,否則結果只能是(n-1)*(n-2)*(n-3).

#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <stdio.h>
using namespace std;
int main()
{
    long long int n,ans;
    cin>>n;
    if(n<3)
        ans=n;
    else{
    if(n%2!=0)
        ans=n*(n-1)*(n-2);
    else if(n%3!=0)
        ans=n*(n-1)*(n-3);
    else
        ans=(n-1)*(n-2)*(n-3);
    }
     cout<<ans<<endl;
	return  0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章