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

2021-07-29 18:58:30 字數 1164 閱讀 9301

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

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

問題描述

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

輸入格式

輸入乙個正整數n。

輸出格式

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

樣例輸入 9

樣例輸出

504資料規模與約定

1 <= n <= 106。

分析:判斷兩個數是否互質的方法(幾種常見的):

(一些數的規律和帶特殊屬性的數都是常考的內容)

1.1和任意大於1的自然數都互質

2.2和任意奇數都互質

3.相鄰的兩個自然數互質

4.相鄰的兩個奇數互質

5.不相同的兩個質數互質

6.乙個數是合數,另乙個是質數,除合數是質數的倍數外,一般都是互質的,例:34和7

有了基礎的必備知識,我們再來具體分析看有哪些情況。

一、由於兩個相鄰的奇數是互質,且兩個相鄰的自然數是互質的,因此當n為奇數時,最大最小公倍數為n*(n-1) *(n-2)。

二、由一得到了數的分類,奇數和偶數,那麼當偶數的時候有什麼情況呢。當n為偶數時,雖然相鄰的兩個自然數是互質的,但是相鄰的兩個偶數明顯不互質,如果這樣求結果一定不符合要求。那我們想向前推乙個會怎麼樣呢,(n-1)* (n-2) * (n-3).是滿足互質了,但是是最大嗎?還有哪些情況呢?n * (n-1)* (n-3)呢,很明顯n* (n-1)* (n-3)大於(n-1) * (n-2) * (n-3),但是n * (n-1)* (n-3)什麼時間能夠滿足互質呢?從n到n-3已經超過了3的迴圈了,如果說他們不互質的話那麼唯一的可能約數就是3了,所以這裡只要判斷是n是否是3的倍數即可,如果是3的倍數的話,那麼(n-1) * (n-2) * (n-3)明顯要大,而n* (n-1)* (n-3)並不互質。若是n不是3的倍數,則n* (n-1)* (n-3)大。例:n=6的時候,6* 5 * 3不行,而是應該是3 * 4*5,n=8的時候是,8 * 7 * 5.

ac**:

#include#includeusing namespace std;

typedef long long ll;

int main()

return 0;

}

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

演算法訓練 最大最小公倍數 時間限制 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 ...

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

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