問題描述
已知一個正整數N,問從1~N中任選出三個數,他們的最小公倍數最大可以爲多少。
輸入一個正整數N。
1 <= N <= 106。
注:貪心,從最大的三個數開始考慮,如果最大的數爲奇數,那麼相鄰的三個數中有兩個奇數,最大公約數爲1,最小公倍數就爲n*(n-1)*(n-2). 如果爲偶數,那麼往後移,考慮n*(n-1)*(n-3),這時n和n-3相差3,式子滿足條件的前提是n不能被3整除,否則結果只能是(n-1)*(n-2)*(n-3).
#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <stdio.h>
using namespace std;
int main()
{
long long int n,ans;
cin>>n;
if(n<3)
ans=n;
else{
if(n%2!=0)
ans=n*(n-1)*(n-2);
else if(n%3!=0)
ans=n*(n-1)*(n-3);
else
ans=(n-1)*(n-2)*(n-3);
}
cout<<ans<<endl;
return 0;
}