• 算法训练 最大最小公倍数


    算法训练 最大最小公倍数  
    时间限制:1.0s   内存限制:256.0MB
       
    问题描述

    已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

    输入格式

    输入一个正整数N。

    输出格式
    输出一个整数,表示你找到的最小公倍数。
    样例输入
    9
    样例输出
    504
    数据规模与约定

    1 <= N <= 106


    思路:

    刚开始想的就是简单的n*(n-1)*(n-2),理所应当的想成了n是奇数的情况。

    如果n是偶数的情况的话,那么n和n-2肯定是有公约数2的。如果抛去n-2缩小数值考虑n-3。那么也需要判断n是否能够被3整除。如果不能整除那么最大的数值就是n*(n-1)*(n-3),不再需要向下考虑。如果是能够整除,再向下考虑的话,又会被2整除。那么我们需要定住(n-1)*(n-2)。(n-3)是奇数,此时最大的数值就是(n-1)*(n-2)*(n-3)。


    小于等于2的时候情况单独处理,计算过程中n是long long类型的,不然会错误。


    代码:

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int main()
    {
        long long ans;
        long long n;
        scanf("%lld",&n);
        if(n<=2)
        {
            ans=n;
        }
        else if(n%2)
        {
            ans=n*(n-1)*(n-2);
        }
        else
        {
            if(n%3)
            {
                ans=n*(n-1)*(n-3);
            }
            else
            {
                ans=(n-1)*(n-2)*(n-3);
            }
        }
        printf("%lld",ans);
        return 0;
    }
    


  • 相关阅读:
    费用流入门
    网络最大流入门
    假期编程
    假期编程
    假期编程
    假期编程
    假期编程
    假期编程
    假期编程
    假期编程
  • 原文地址:https://www.cnblogs.com/lemonbiscuit/p/7776043.html
Copyright © 2020-2023  润新知