刚做了,蓝桥杯算法训练的最大最小公倍数一题,感觉考查的是数学了,哈哈。
时间限制: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
如有任何问题,欢迎留言。
祝君好运!