ALGO-2 最大最小公倍数

本文探讨了在1至N范围内选取三个数使它们的最小公倍数最大的问题。通过分析不同情况,如奇数、偶数且能被3整除、偶数但不能被3整除,给出了一种高效的解决方案。代码简洁,但背后的分析过程揭示了数学规律在算法设计中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ALGO-2 最大最小公倍数

问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

输入格式
输入一个正整数N。

输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。

解题思路:

刚看题的时候,想的应该是,三个数必有一个质数,但是剩下两个数就可能应为有公因数而不是局部最优解。
所以就写了几个数分析。
9---------9 x 8 x 7
8---------5 x 7 x 8
12--------11 x 10 x 9
7---------7 x 6 x 5
。。。。。。。
写着写着就发现,基本上稍微想想就能写出来答案。
就分析了一下自己的脑回路
基本上分为2整除和3整除
比较坑的是,3整出得前提必须是可以被2整除。试着改了一下得时候过了部分。
还有就是结果的类型一定要是long long ,10^6得结果肯定是超了int类型的。
改完这些就直接AC了。
代码很简单,分析过程很重要,好了,贴代码

完整代码

#include<iostream>
using namespace std;

int main()
{
    long long n;
	cin>>n;
	long long ans ;
	if(n<2)
		ans = n;
	else if( n%2==1)//奇数
		ans = n*(n-1)*(n-2);
	else
		if(n%3==0)//被3整除
			ans = (n-1)*(n-2)*(n-3);
		else
			ans = n*(n-1)*(n-3);
	cout<<ans;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值