题目:从1-n中选择三个数,使得这三个数取得最大的最小公倍数
分析:当n为奇数时,n*(n-1)*(n-2)三个数取得最大的最小公倍数,它们三个数两两互质
当n为偶数时,n和n-2有公因子2,n-3和n可能有公因子3,需要判断n是否是3的倍数
当n为偶数且为3的倍数时,(n-1)(n-2)(n-3)取得答案
否则,n(n-1)(n-3)取得答案
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long LL;
int main()
{
int n;
while(scanf("%d",&n)==1&&n)
{
if(n<=2) cout<<n<<endl;
else if(n%2) cout<<(LL)((LL)n*(n-1)*(n-2))<<endl;
else {
if(n%3) cout<<(LL)((LL)n*(n-1)*(n-3))<<endl;
else cout<<(LL)((LL)(n-1)*(n-2)*(n-3))<<endl;
}
}
return 0;
}