蓝桥杯 算法训练 ALGO-2 最大最小公倍数 JAVA

ALGO-2 最大最小公倍数

资源限制
时间限制: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);
}

闪现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢谢 啊sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值