zoukankan      html  css  js  c++  java
  • SDNU 1464.最大最小公倍数(思维)

    Description

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

    Input

    输入一个正整数 N(1<=N<=10^6)

    Output

    输出一个整数,表示你找到的最小公倍数

    Sample Input

    9

    Sample Output

    504
    思路:网上说这道题用o(n^3)的会T,都是假的!我用o(log n)的做法也T了!惨无人道。后来只能用数学的方法。
    如果n是个奇数,则(最大最小公倍数) = n*(n-1)*(n-2)
    如果n是个偶数,如果n是3的倍数,则(最大最小公倍数) = (n-1)*(n-2)*(n-3)
    否则(最大公约数) = n*(n-1)*(n-3)
    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <map>
    using namespace std;
    #define ll long long
    const int inf = 0x3f3f3f3f;
    const int mod = 1e9+7;
    
    ll n, sum;
    
    int main()
    {
        scanf("%lld", &n);
        if(n <= 2)printf("%lld
    ", n);
        else if(n%2 != 0)
        {
            sum = n*(n-1)*(n-2);
            printf("%lld
    ", sum);
        }
        else if(n%3 == 0)
        {
            sum = (n-1)*(n-2)*(n-3);
            printf("%lld
    ", sum);
        }
        else
        {
            sum = n*(n-1)*(n-3);
            printf("%lld
    ", sum);
        }
        return 0;
    }
  • 相关阅读:
    第04组 beta冲刺(1/4)
    2019 SDN上机第5次作业
    SDN课程阅读作业(2)
    第04组 Alpha事后诸葛亮
    C Primer 复习题
    C Primer 编程练习
    C语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02
    Appium + java截图方法
  • 原文地址:https://www.cnblogs.com/RootVount/p/11250412.html
Copyright © 2011-2022 走看看