题目描述
已知一个正整数 N,问从 1∼N中任选出三个数,他们的最小公倍数最大可以为多少。
输入描述
输入一个正整数 NNN。
1<=N<=1e6
输出描述
输出一个整数表示答案。
题解:
首先这三个数应该是两两互质的,如果不是互质的,它们就会有公约数,导致答案减少。而由于相邻的两个数必然互质,所以我们考虑以下情况:
- 如果 N 为奇数,那么 N 与 N−2 互质,则 N、N−1、N−2 为选定的 3 个数
- 如果 N 为偶数,那么 N 与 N−2 最大公约数为 2,此时需要考虑 N 与 N−3的关系:
- 如果 N 不能被 3 整除,则 N−3 也不能被 3整除,此时 N 与 N−3 互质,则 N、N−1、N−3为选定的 3 个数
- 如果 N 能被 3 整除,则 N−3 也能被 3整除,此时 N 与 N−3 不互质,但是 N−1 与 N−3必然互质(N−1、N−3 都为奇数),所以 N−1、N−2、N−3 即为选定的 3 个数
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin>>n;
if(n%2 == 1) cout<<n*(n-1)*(n-2);
else if(n%3!=0) cout<<n*(n-1)*(n-3);
else cout<<(n-1)*(n-2)*(n-3);
return 0;
}