題目描述
給出一個整數n,將n分解爲至少兩個整數之和,使得這些整數的乘積最大化,輸出能夠獲得的最大的乘積。
例如:
2=1+1,輸出1;
10=3+3+4,輸出36。
思路
通過分析,不難發現其實最大時就是將整數拆成僅含3和2的序列,且3的個數儘量大
代碼
import java.util.Scanner;
public class Main{
public static void main(String[] args){
//讀取輸入
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int result = 1;
int count,remainder;
remainder = num % 3;
//如果num除以3餘1,則3的個數爲num/3-1,否則爲num/3
count = (remainder == 1)?num/3-1:num/3;
//累乘3
for(;count>0;count--){
result *= 3;
}
//餘數爲1,則再乘4;餘數爲2,再乘2
if(remainder == 1){
result <<= 2;
}else if(remainder == 2){
result <<= 1;
}
System.out.println(result);
}
}