问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
题意分析:在n个数中找任意三个数的最小公倍数,并且求得最大的最小公倍数(重点在于最大)。
思路分析:最大 最小公倍数,联想到两个数的求最大最小公倍数,即两个数的乘积(注:连续的两个自然数是互斥的)。
同样,我们可以拿最后三个数来做考虑。
1.当n为奇数时,n,n-1,n-2为奇偶奇,里面只有一个偶数,所以不会有2这个因子。这三个数相差不到3,所以也不会有因子3,故符合题意。
2.当n为偶数时,n,n-1,n-2为偶奇偶,此时n,n-2肯定含有因子2,所以除于2不值得。所以考虑将n-2 换成n-3,变成奇偶奇,此时也有一个问题,n和n-3,如果n%3==0,则除于3更不值得。仍根据奇偶奇的原则,变动偶数n为n-2,此时换成n-1,n-2,n-3和1情况一样。故此时符合题意。
思路摘自:http://blog.youkuaiyun.com/become789/article/details/68071095
代码:
#include<iostream>
using namespace std;
int main(){
long long n,sum;
while(cin>>n){
if(n <= 2)
sum = n;
else if(n%2 == 0){
if(n%3 != 0){
sum = n*(n-1)*(n-3);
}
else
sum = (n-1)*(n-2)*(n-3);
}
else
sum = n*(n-1)*(n-2);
cout<<sum<<endl;
}
return 0;
}