最大的最小公倍數
time limit: 1000 ms
memory limit: 32768 k
total submit: 175(50 users)
total accepted: 48(38 users)
rating:
special judge: no
description
從小學我們就學過最小公倍數,今天這個問題也是關於最小公倍數lcm (lease common multiple)的。我們的問題是,給定乙個整數n後,你需要任取三個不大於n的數,取法不限,每個數可取多個,使得取到的這三個數的最小公倍數在所有取法中是最大的。
舉個例子:給定的n是5。那麼不大於5的可選數為1、2、3、4、5。這裡選出3、4、5三個數的最小公倍數是60,在所有取法中是最大的。因此我們得到結果60。
input
輸入包含多組測試資料,每組為乙個整數n (1 <= n <= 10^6) 如上所述。
output
對每組測試資料,輸出乙個整數,代表所有可能取法中,選出的不超過n的三個數的最小公倍數的最大值。允許選取相同的數多次。
sample input57
sample output
60210
這個題的意思就是要我們在1~n的範圍內找三個數,使他們的最小公倍數在這個範圍內的組合是最大的。那麼你的第一印象是什麼的?我的第一印象是找三個兩兩互質的數,這樣只需要相乘即可,就沒有需要約分的地方。
接下來先說乙個結論:大於1的兩個相鄰的自然數必定互質。
而對於1~n的範圍,肯定是 n*(n-1)*(n-2)的乘積最大、如果這三個數還兩兩互質的話那就最棒了。
如果n是奇數,那麼 n、n-1、n-2必定兩兩互質,要是有些糾結的話,那麼我們就分析在什麼情況下可能會存在公因子。n是奇數,那麼n,n-1,n-2一定是兩奇加一偶的情況。公因子2直接pass,因為只有乙個偶數。假設剩下的n,n-2中有乙個數能被3整除,那麼有公因子的數一定是n或n-2加減3才能得到的情況。為此,n,n-1,n-2的乘積不僅是最大的,而且一定兩兩互質。
如果n是偶數,繼續分析n*(n-1)*(n-2),這樣的話n和n-2必定有公因子2,那麼就換成式子n*(n-1)*(n-3)。然後仔細思考一下,不行啊,若偶數本身就能被3整除的話,那麼式子n*(n-1)*(n-3)也不成立了,n和n-3就有公因子3,再仔細思考一下,式子就變成了(n-1)*(n-2)*(n-3),兩奇夾一偶的情況。
#include
#include
using namespace std;
int main()
{long long n, number;
cin>>n;
if( n <= 2)
cout<<2;
else if(n % 2)
{number = n * (n - 1) * (n - 2);
cout<
最大最小公倍數
時間限制 1 sec 記憶體限制 128 mb 提交 125 解決 4 提交 狀態 討論版 題目描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入 每個測試點 輸入檔案 存在多組測試資料。每個測試點的第一行為乙個整數task,表示測試資料的組數。在一組測試資料中 ...
最大最小公倍數
問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 9樣例輸出 504資料規模與約定 1 n 106。include include include using namespace...
最大最小公倍數
題目 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n 輸出格式 輸出乙個整數,表示你求得的最小公倍數 樣例輸入 樣例輸出 504注釋 504 9 8 7 資料規模與約定 1 n 106 分析 題目要求涉及貪心演算法,對於個人而言,更像是乙個純數...