问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106
数学
思路:
- 当N为奇数时,最大值为N * (N-1) * (N-2)
- 当N为偶数时,假设最大值为N * (N-1) * (N-2),则会有两个偶数需要结果除2
那我们只能退一步设最大值为N * (N-1) * (N-3),假如N为3的倍数,则需要结果除3
假如N为3的倍数,最大值只能是(N-1) * (N-2) * (N-3)
代码:
#include<iostream>
using namespace std;
typedef long long LL;
LL gcd(LL a,LL b){
int t = a % b;
int m = a, n = b;
while(t != 0){
a = b;
b = t;
t = a % b;
}
return m * n / b;
}
int main(){
LL n, a;
cin >> n;
if(n % 2 == 1){
cout << n * (n - 1) * (n - 2) << endl;
}
else{
if(n % 3 == 0){
cout << (n - 1) * (n - 2) * (n - 3) << endl;
}
else{
cout << n * (n - 1) * (n - 3) << endl;
}
}
return 0;
}