您的位置:首页 > 其它

蓝桥杯 算法训练 最大最小公倍数

2017-11-06 00:50 239 查看
问题描述

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

输入格式

输入一个正整数N。

输出格式

输出一个整数,表示你找到的最小公倍数。

样例输入

9

样例输出

504

数据规模与约定

1 <= N <= 106。

根据题目要求一般都会想到,是n和n-1还有n-2这三个数的乘积,但是仔细思考过后我发现,其实里面是有bug的,就比如说数字8 最大的不是 8 7 6,因为24才是8和6最小倍数,所以说偶数和奇数并不相同,这是一种情况,改良之后是8 7 5,但是改良之后会出现另外一种情况比如说12,会出现 12 11 9,这样的话12和9的最小公倍数是36,所以说还要在进行一次筛选,读者可以细细思考品味一下哦

代码如下:

#include<iostream>

using namespace std;

int main()

{
long long int num;
cin>>num;
if(num%2==1)
cout<<num*(num-1)*(num-2);
else if(num%2==0&&num%3!=0)
cout<<num*(num-1)*(num-3);
else
cout<<(num-1)*(num-2)*(num-3);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: