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