首页 > 试题广场 >

整数成绩最大化

[编程题]整数成绩最大化
  • 热度指数:1076 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给出一个整数n,将n分解为至少两个整数之和,使得这些整数的乘积最大化,输出能够获得的最大的乘积。
例如:
2=1+1,输出1;
10=3+3+4,输出36。

输入描述:
输入为1个整数


输出描述:
输出为1个整数
示例1

输入

10

输出

36

转化成多个3和多个2的和,得到积的最大值

import java.util.Scanner;

public class Zhengshuchengjizuidahua_Wangyi {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int n = scan.nextInt();//输入的整数
            int num3 = 1;
            int left = 0;
            for (int i = n - 3; i > 0; i -= 3) {
                if (i % 2 == 0) {
                    int temp = i / 2;
                    if (temp <= 2) {
                        left = i;
                        break;
                    }
                }
                num3++;
            }
            int num2 = left / 2;
            int ji = 1;
            for (int i = 0; i < num3; i++) {
                ji *= 3;
            }
            for (int i = 0; i < num2; i++) {
                ji *= 2;
            }
            System.out.println(ji);
        }
    }
}
发表于 2018-08-12 14:59:26 回复(0)