藍橋杯 演算法訓練 最大最小公倍數

2021-07-26 15:29:43 字數 924 閱讀 3934

演算法訓練 最大最小公倍數  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

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

輸入格式

輸入乙個正整數n。

輸出格式

輸出乙個整數,表示你找到的最小公倍數。

樣例輸入 9

樣例輸出

504資料規模與約定

1 <= n <= 106。

思路:

這個題其實還真應該好好想想,剛開始就很想當然的認為找了三個最大的數相乘,沒考慮要分奇偶情況討論

靜下心來一想其實還真是這麼回事:

對於奇數的話我們挑選出最大的三個數:

奇偶奇 n n-1 n-2 兩個奇數,雖然變化了2但是都是奇數,沒有公因子2,所以此時他們是最大的最小公倍數.

對於偶數如果我們還是挑選出三個最大的數的話

:偶奇偶 n n-1 n-2 兩個偶數肯定會有乙個公因子2,此時就不會滿足最大,為了還是能滿足兩個奇數乙個偶數 我們選擇 n n-1 n-3 即減少乙個,但是新的問題又來了  n和 n-3 可能會包含乙個新的公因子3

(因為他們之間變化了3,或者相差3 不會再出現更大的公因子了)

如果包含了的話會使這個最大最小公倍數更小,所以需要特判一下,如果n和n-3有公因子3 那麼我們就只能將n減少 選擇 n-1 n-2 n-3 三個連續的最大數  奇偶奇 就滿足了n為奇數的情況的最大;

#includeusing namespace std;

long long n;

int main()

else if(n%2==1)

printf("%lld\n",n*(n-1)*(n-2));

else

return 0;

}

藍橋杯 演算法訓練 最大最小公倍數

問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 9樣例輸出 504資料規模與約定 1 n 106。參考 當n為奇數時,答案一定是n n 1 n 2 當n為偶數時,答案是n a ...

藍橋杯 演算法訓練 最大最小公倍數

問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 9樣例輸出 504資料規模與約定 1 n 106。思路 首先,從題目的資料規模可以看出題目存在乙個特殊的情形,就是當n小於3的時...

藍橋杯演算法訓練 最大最小公倍數

問題 問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 樣例輸出 資料規模與約定 1 n 10 6。這道題在想的時候就想到用常規辦法來寫,但是寫到一半發現套用了4層迴圈,在回過頭...