剛做了,藍橋杯算法訓練的最大最小公倍數一題,感覺考查的是數學了,哈哈。
時間限制: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
如有任何問題,歡迎留言。
祝君好運!