藍橋杯 最大最小公倍數

2021-08-09 15:53:23 字數 1283 閱讀 2200

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

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

問題描述

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

輸入格式

輸入乙個正整數n。

輸出格式

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

樣例輸入 9

樣例輸出

504資料規模與約定

1 <= n <= 106。

在一組數中找三個數,使他們的最小公倍數最大,我們知道,兩個數的最小公倍數在最大的情況就是當兩個數互質的時候,他們的最小公倍數就是這兩個數的乘積,而且還有那麼乙個定理,即兩個相鄰的自然數互質,即使我們不知道定理怎麼證明,但大體能想出來,但這是三個數,也就是說存在  奇-偶-奇  和 偶-奇-偶 兩種情況。

一:奇-偶-奇 這種情況用於n是奇數的情況,即 最大的三個數就是 n,n-1,n-2,那麼可以看到,因為n和n-2都是奇數,所以肯定不存在公因數2,假設三個數中有乙個存在因數3,那麼另外兩個肯定不存在因數3,因為他們的變化範圍都小於3,也就是說,這三個數不僅是最大的,還是互質的,也就是說最大的最小公倍數就是這三個數的乘積,即n*(n-1)*(n-2)相信大部分人都可以想到這一步

二:偶-奇-偶 對於這種情況兩個偶數肯定是存在公因數2,也就是意味著最小公倍數要除以2,這是絕對不能容忍的,所以我們稍微縮小一下數,即n,n-1,n-3,這樣就又變成奇-偶-奇的結構了,但還有乙個問題,就是假如偶數n存在因數3,那麼n-3也必定有因數3,這直接導致最小公倍數除以3,更加不能容忍,為了保持奇-偶-奇的結構不變,只能變那個偶數,而離他最近的偶數就是n-2了,這下就完美了,3個數依然是互質的,最小公倍數就是(n-1)*(n-2)*(n-3)

三:雖然題目中明確的說了,1 <= n <= 106,但我依然覺得這個範圍有點愚蠢,在1個數中任意選出3個數我也是醉了,如果你覺得這沒什麼的話,那接下來就讓人**了,因為你永遠無法提交正確,即使在哈爾濱理工大學的oj(上ac了,在藍橋杯上依然只能得60分,沒錯,就是這麼任性。

小小吐槽一下,下面上**

#includeusing namespace std;

int main()

{ long long n,ans;

cin>>n;

if(n<3)

ans=n;

if(n%2!=0)

ans=n*(n-1)*(n-2);

else if(n%3==0)

ans=(n-1)*(n-2)*(n-3);

else

ans=n*(n-1)*(n-3);

cout<

藍橋杯 最大最小公倍數

最大的最小公倍數 time limit 1000 ms memory limit 32768 k total submit 265 71 users total accepted 63 51 users rating special judge no description 從小學我們就學過最小公倍...

藍橋杯 最大最小公倍數

題目大意 給你乙個n,然後從這1 n這n個數中取出任意三個數 可以重複 求三個數的最小公倍數,然後求任意三個數中能取到的最大值 題目思路 看樣例,猜題意,9的答案是9,8,7,然後成功猜出來奇數是直接n n 1 n 2 因為n和n 2都是奇數,公約數是1,n n 2 也是奇數,跟n 1的公約數也是1...

藍橋杯最大最小公倍數

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