题目描述
给出一个整数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);
}
}