蓝桥杯 算法训练 最大最小公倍数
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;
}
已知一个正整数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;
}
相关文章推荐
- [蓝桥杯]算法训练 最大最小公倍数
- 蓝桥杯:算法训练之最大最小公倍数
- 蓝桥杯 算法训练 最大最小公倍数
- 蓝桥杯 - 算法训练 最大最小公倍数 C语言实现
- 蓝桥杯 - 算法训练 - ALGO-2 最大最小公倍数
- 蓝桥杯算法训练 最大最小公倍数
- 蓝桥杯-算法训练2 最大最小公倍数
- 蓝桥杯 ALGO-67 算法训练 最大值与最小值的计算
- 蓝桥杯 ALGO-148 算法训练 5-1最小公倍数
- 蓝桥杯 ALGO-148 算法训练 5-1最小公倍数 java版
- 蓝桥杯 ALGO-67 算法训练 最大值与最小值的计算
- 算法训练 最大最小公倍数
- 蓝桥杯 算法训练 5-1最小公倍数 JAVA
- 算法训练 最大最小公倍数
- 算法训练 最大最小公倍数
- 蓝桥杯练习系统算法训练——最小公倍数
- 算法训练 最大最小公倍数
- 算法-蓝桥杯-算法训练 5-1最小公倍数 (JAVA)
- 蓝桥杯 算法训练 5-1最小公倍数
- 蓝桥杯 算法训练 5-1最小公倍数