题目:
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
思路:
刚开始就朝着求两个数最小公倍数的方向想,后面发如果强行暴力是不可能得出结果的,所以直接去看解析。。。后面发现这题还涉及数论知识点就很无奈。后面清楚本题思想后就自己敲一遍,后来发现验证不通过,输入返回的输入输出带进去能得出结果,但是是错误的。我当时就很纳闷,会不会是因为数据类型的原因,因为没有把long型写成了int型。最后验证果真如此。只是我没想到的是不同的数据类型竟然返回的结果差距这么大而且不会报错。
本题解析:
代码:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
long res=0;
long n=sc.nextLong();//输入一个数字n
if(n%2!=0) {//n为奇数
res=n*(n-1)*(n-2);
}
else {//为偶数
if(n%3==0) {//三的倍数
res=(n-1)*(n-2)*(n-3);//让最大偶数-1
}
else {
res=n*(n-1)*(n-3);//保留最大偶数,让小的偶数-1
}
}
System.out.println(res);
}
}