HustOJ 最大最小公倍数 (思维水题)

开始拿到这道题想的有点复杂了, 简单来想, 为了使得最大LCM最大, 我们应该从N开始往下找, 找到三个最大的互质的数就好了

这个地方牵扯到数论中的一点儿基础知识, 很简单的知识

        1. 互质数: 两个数的最大公约数是1的时候称为互质数

        2. 相邻的两个自然数是互质数。如 15与 16。

        3. 相邻的两个奇数是互质数。如 49与 51。

这时候分类讨论一下小于三和奇数, 偶数的情况就好了.

奇数直接取n, n-1, n-2, 偶数就再多判断一下能不能被3余的情况

#include<stdio.h>
int main()
{
    long long N;
    long long answer;
    while(scanf("%lld",&N)!=EOF){
        if(N<=2)
            answer = N;
        else if(N==3)
            answer = 6;
        else if(N%2==1)
            answer = N*(N-1)*(N-2);
        else{
            if(N%3==1 || N%3==2)
                answer = N*(N-1)*(N-3);
            else
                answer = (N-3)*(N-1)*(N-2);
        }
        printf("%lld\n",answer);
    }
}

猜你喜欢

转载自blog.csdn.net/a1097304791/article/details/83243581