蓝桥杯 最大最小公倍数

时间:2023-02-23 11:16:50

题目链接:最大最小公倍数


题目大意:给你一个N,然后从这1~N这N个数中取出任意三个数(可以重复),求三个数的最小公倍数,然后求任意三个数中能取到的最大值


题目思路:看样例,猜题意,9的答案是9,8,7,然后成功猜出来奇数是直接n*(n-1)*(n-2),因为n和n-2都是奇数,公约数是1,n*(n-2)也是奇数,跟n-1的公约数也是1,所以答案就是n*(n-1)*(n-2),然后打个n^3的表继续猜题意,发现为偶数时要分能不能被三整除,不能的话答案就是n*(n-1)*(n-3),能的话,答案就是(n-1)*(n-2)*(n-3),然后特判一下1和2就可以了

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int main(){
    ll n;
    while(cin>>n){
        if(n == 1) puts("1");
        else if(n == 2) puts("2");
        else{
            if(n&1) printf("%lld\n",n*(n-1)*(n-2));
            else{
                if(n%3 != 0) printf("%lld\n",n*(n-1)*(n-3));
                else printf("%lld\n",(n-2)*(n-1)*(n-3));
            }
        }
    }
    return 0;
}