算法训练 最大最小公倍数
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
找出最大的最小公倍数。
首先根据数据看肯定是不行的,
然后就贪心啦,先分析,相邻的两个数互质,如果最大的是奇数,那么就直接可以N×(N-1)×(N-2),
不然就是为偶数的时候了,
当为偶数时, 就没那么简单了,要分析一下,
反正(N-2)也一定是偶数,所以选下一个(N-3),但是如果N可以被3整除就不行了,那样的话,
就要选则(N-1)×(N-2)×(N-3).
#include <iostream> #define ll long long int // #include <cctype> using namespace std; ll n,sum; int main(){ cin>>n; if(n<=2){ sum =n; }else if(n%2){ sum = n*(n-1)*(n-2); }else{ if(n%3==0){ sum = (n-1)*(n-2)*(n-3); }else{ sum = n*(n-1)*(n-3); } } cout<<sum<<endl; return 0; }