牛骨文教育服务平台(让学习变的简单)

刚做了,蓝桥杯算法训练的最大最小公倍数一题,感觉考查的是数学了,哈哈。

时间限制:1.0s   内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 10^6。

思路如下:

  1. n是奇数,那就最大的三个数相乘

  2. n是偶数,得分两种情况了,

①如果n不是3的倍数,那就s=n(n-1)(n-3)---n与n-2同为偶数,故排除一个n-2;

②n是3的倍数,s=(n-1)(n-2)(n-3),n与n-2同为偶数,排除n-2,但n与n-3均有3这个公约数,得排除n-3,那就用n-4么?多往后写几个数你就会发现这样下去根本不行。

所以只能用(n-1)(n-2)(n-3)。

代码如下

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner in=new Scanner(System.in);
		long n=in.nextLong();
		long s;
		if(n%2==1){
			s=n*(n-1)*(n-2);
		}
		else{
			if(n%3==0)
				s=(n-1)*(n-2)*(n-3);
			else
				s=n*(n-1)*(n-3);
		}
		System.out.println(s);
	}
}

但是上传测试出了小问题,分数只有60分,百思不得其解,网上查阅了很多,发现貌似这道题后台测试数据是错误的,(⊙o⊙)…
见 http://blog.csdn.net/u011669700/article/details/18702757

如有任何问题,欢迎留言。

祝君好运!