ALGO-2 最大最小公倍数

89 阅读1分钟

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;
}