资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
核心思想:
找到最大的三个互为质数的数,然后输出相乘后的结果(在找的过程中需要考虑一些特殊的情况),并不是所有的结果都是n*(n-1)*(n-2)。
易错点:
数据类型应使用long long,防止溢出。
代码:
#include<iostream>
using namespace std;
int main()
{
long long max,n;
cin>>n;
if(n<=2) //n小于2时直接输出n
{
cout<<n;
}
else if(n%2==1) //n为奇数,最大值为 n*(n-1)*(n-2)
{
max = n*(n-1)*(n-2);
cout<<max;
}
else if(n%3==0) //n为偶数,同时被3整除,最大值为 (n-1)*(n-2)*(n-3)
{
max = (n-1)*(n-2)*(n-3);
cout<<max;
}
else //n为偶数,不能被3整除,最大值为 n*(n-1)*(n-3)
{
max = n*(n-1)*(n-3);
cout<<max;
}
return 0;
}