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

2021-10-04 23:06:09 字數 1164 閱讀 8197

這是乙個求最小公倍數的題目

看到網上的題解說有乙個數學常識:三個正整數的最小公倍數不會大於這三個數的乘積(ps:啥常識呀,我咋不知道啊)

當然,這是有乙個前提的,當三個數兩兩互質時才可以使三個數相乘為這三個數的是最小公倍數。

而題中範圍為1-n,所以我們需要選出兩兩互質的最大三個數。因此有以下三個情況:

n為奇數時

因為相鄰的兩個正整數是互質的,以及相鄰的兩個奇數也是互質的,所以直接輸出n∗(

n−1)

∗(n−

2)

n*(n-1)*(n-2)

n∗(n−1

)∗(n

−2)n為偶數時

n為偶數時,n如果不能被三整除時,n和n-3互質,但是由於是偶數,所以n和n-2必定不是互質的,因此需要返回n∗(

n−1)

∗(n−

3)

n*(n-1)*(n-3)

n∗(n−1

)∗(n

−3)n為偶數時,n如果能被三整除時n和n-3可能不是互質的情況,因此我們需要返回的是n∗(

n−1)

∗(n−

5)

n*(n-1)*(n-5)

n∗(n−1

)∗(n

−5),但是這時就有乙個問題,我們明顯可證出(n−

1)∗(

n−2)

∗(n−

3)

>n∗

(n−1

)∗(n

−5

)(n-1)*(n-2)*(n-3) > n*(n-1)*(n-5)

(n−1)∗

(n−2

)∗(n

−3)>n∗

(n−1

)∗(n

−5),因此我們應該返回(n−

1)∗(

n−2)

∗(n−

3)

(n-1)*(n-2)*(n-3)

(n−1)∗

(n−2

)∗(n

−3)

#includeusing namespace std;

int main()

else if(n%2==0)

else

} cout << res << endl;

return 0;

}

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

問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 9樣例輸出 504思路 第一步 讀懂題目 因為剛開始沒有讀懂題目,打錯了很多 破題,輸入乙個數字n,從1 n中任選三個數使得他們...

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

演算法訓練 最大最小公倍數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 9 樣例輸出 504資料規模與約定 1 n 106。...

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

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