题目
几天以前,我学习了最小公倍数。玩得挺久了,想换换口味。
我不想用太多的数字,我想从1到n中选三个数字(可以相同)。使得他们的最小公倍数最大。
收起
输入
单组测试数据。 第一行有一个整数n (1≤n≤1,000,000)。
输出
输出一个整数表示选三个数字的最大的最小公倍数。
输入样例
9 7
输出样例
504 210
思路
首先分为小于3和大于等于3两类,由于可重复,当n为1时结果为1,当n为2时结果最大为2,大于等于3中,奇数一定为n*(n-1)*(n-2),偶数中,是3的倍数,为n*(n-1)*(n-3),不是3的倍数,则为(n-1)*(n-2)*(n-3)。另外,n过大时,需要使用BigInteger。
Java:
import java.math.BigInteger;
import java.util.*;
public class testOne {
public static void main(String[] args) throws Exception{
Scanner input=new Scanner(System.in);
int n=input.nextInt();
BigInteger nb=new BigInteger(n+"");
BigInteger nb1=new BigInteger((n-1)+"");
BigInteger nb2=new BigInteger((n-2)+"");
BigInteger nb3=new BigInteger((n-3)+"");
if(n<3) {
if(n==1) {
System.out.println("1");
}
if(n==2) {
System.out.println("2");
}
}else {
String mul;
if(n%2==1) {
mul=nb.multiply(nb1.multiply(new BigInteger(nb2+""))).toString();
}else {
if(n%3==0) {
mul=nb1.multiply(nb2.multiply(new BigInteger(nb3+""))).toString();
}else {
mul=nb.multiply(nb1.multiply(new BigInteger(nb3+""))).toString();
}
}
System.out.println(mul);
}
}
}