从1~N中任选出三个数,他们的最小公倍数最大可以为多少
2018-02-06 15:38
711 查看
一、题目
问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 10^6。
二、分析
1、第一想法刚开始看到这个题目的时候第一想法就是枚举1~N中任意三个数,然后求它们的最小公倍数,从这些最小公倍数中再选择最大的一个即为正确答案,可是1<=N<=10^6,如果要枚举任意三个数,最简单的做法就是三个嵌套的for循环,这样的话时间复杂度为O(N^3),会运行超时的。
2、正确解答
数学知识:如果三个数互为质数,那么这三个数的乘积便为它们的最小公倍数。
因为本题目中要求最小公倍数的最大值,那么可以直接从N向前看,找三个连续的互为质数的数,那么它们的乘积便是1~N最小公倍数的最大值。
有以下二种情况。
(1)、当N为奇数时,那么N,N-1,N-2互为质数,很明显N*N-1*N-2是1~N最小公倍数的最大值。
(2)、当N为偶数时,且能被3整除时,N-1,N-2,N-3互质,此时N-1*N-2*N-3是1~N最小公倍数的最大值;当N为偶数时,但不能被3整除时,N,N-1,N-3互质,此时N*N-1*N-3是1~N最小公倍数的最大值。
public class Question2 { static long max = 0; public static void main(String[] args) throws Exception { Scanner scanner = new Scanner(System.in); long n = scanner.nextLong(); getResult(n); System.out.println(max); } public static void getResult(long n) { if (n <= 2) { max = n; } else if (n % 2 == 1) { max = n * (n - 1) * (n - 2); } else { if (n % 3 == 0) { max = (n - 1) * (n - 2) * (n - 3); } else { max = n * (n - 1) * (n - 3); } } } }
Some people succeed because they are destined to,but most people succeed because they are determined to.
相关文章推荐
- 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 5
- 最小公倍数最大可以为多少(主要看计算方法)
- 1~N中随机选三个数,求其最大的 最小公倍数。
- 求出全部的正整数对 使他们最大公约数为n,最小公倍数为m
- Python实现利用最大公约数求三个正整数的最小公倍数示例
- 三人年龄 三个神秘蒙面人来访F博士。博士询问他们年龄时,他们说:我们中年龄最小的不超过19岁。我们3人年龄总和为70岁。且我们三人年龄的乘积是所有可能情况中最大的。
- 牛牛和15朋友来玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成26份,作为领导干部,牛牛总是会选择其中总价值最小的一份田地,作为牛牛最好的朋友,你希望牛牛取得的田地价值和尽可能大,你知道这个值最大可以是多少吗? 输入两个整数n和m(1≤n,m≤75)表示田地的大小,接下来n行,每行包括m个0-9之间的数字,表示每块
- 求出所有的正整数对 使他们最大公约数为n,最小公倍数为m
- 27个运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶
- 一个养狗场有4只狗,体重分别为 花花:4.5kg;白白:5.6kg;黑黑:78kg;红红:9.0kg;请编写一个程序,可以计算他们的平均体重,可以找出体重最大和体重最小的狗的名字.
- 一元钱一瓶水,两个空瓶可以换一瓶,三个盖儿可以换一瓶,20元最多能喝多少?
- 最大公约数和最小公倍数
- 最大公约数与最小公倍数
- c++实验7--最大公约和和最小公倍数
- 递归陷阱——有27个人要喝水,每三个空瓶子可以换一瓶水,问需要买多少瓶水
- c++实验7-最大公约数与最小公倍数
- hrbust 1632 最大的最小公倍数
- c++实验7-最大公约数与最小公倍数
- 如何求两个正整数最大公约数和最小公倍数。
- 有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?