资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
emmmmm
上大哥 寒沧的 最大最小公倍数
遇事不爽就上long,这题我给long卡了有一会了。我也是很无奈,欸
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
long n = sc.nextLong();
long mul = 1;
if (n < 3)
{
mul = n;
//n 小于 3 则只能选出两个即为 2
}
else if (n % 2 == 0)
{
if (n % 3 == 0)
{
mul = (n - 1) * (n - 2) * (n - 3);
// 因为这是偶数我们要将他减一
// 变成奇数则ok
}
else
{
mul = n * (n - 1) * (n - 3);
// 当N为偶数时,N - 2同样为偶数
// 但是N和N - 1还是互质的
// 所以在贪心角度下
// 我们考虑使用 n-3 的值去替换 n - 2
}
}
else
{
mul = n * (n - 1) * (n - 2);
// 当n为奇数时,n - 1为偶数,n - 2为奇数相邻的两个正整数互质。
// 同样的,相邻的两个奇数也是互质的
// n为奇数时,最大最小公倍数为 n * (n - 1) * (n - 2)
}
System.out.println(mul);
}