算法训练 最大最小公倍数

  算法训练 最大最小公倍数  
时间限制: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;
}
原文地址:https://www.cnblogs.com/zllwxm123/p/8661671.html