蓝桥杯练习系统(算法训练)-ALGO-2 最大最小公倍数

蓝桥杯-ALGO-2 最大最小公倍数

这里写图片描述


如果按照一般的方法来做的话,不用想,绝对会超时。
举个例子

  • 当n为奇数时 比如为7 那么其在1-7中选取三个数的最大最小公倍数为7*6*5
    即是MAX = n * (n-1) * (n-2)
    因为当三个数互质且连续的时候,其最大公约数不超过2,也就是1,所以为三个数的乘积。

  • 当n为偶数的时候,比如为8,那么n-2就是偶数,也就是不满足那个定律,那么我们可以向后退一位,
    即是MAX = n * (n-1) * (n-3)
    那么n-3就满足定律了

    -接下来最后一点,当n为3的倍数的时候,if (n % 3 == 0) 比如为6
    我们可能会想到n-3、n-4都不管用、那么我们可以把n往后退一位
    即是MAX = (n-1) * (n-2) * (n-3)


代码如下:

#include<cstdio>
#include<iostream>
using namespace std; 
long long N;
int main() {
    long long ans;

    scanf("%d", &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);
    }

    cout << ans << endl;

    return 0;
}

结果如下:
这里写图片描述


我看了那组数据(博主是VIP)
91200
943672006961970

再来一张图片
这里写图片描述

我也是醉了 ….. 数据有误 如果不写if…else估计他自己也过不了…

所以是数据有误 别担心


2015年9月15日12:31:21

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值