网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 933|回复: 0
打印 上一主题 下一主题

Java编程-剪绳子

[复制链接]

97

主题

98

帖子

447

积分

版主

Rank: 7Rank: 7Rank: 7

积分
447
跳转到指定楼层
楼主
发表于 2020-9-30 11:36:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目描述:
给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],...,k[m]。请问k[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
输入描述:输入一个数n。(2 <= n <= 60)
输出描述:输出答案。
示例1
输入:8
输出:18
解题代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
  
public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        System.out.println(cutRope(n));
    }
    private static int cutRope(int target){
        int a = 0;
        int c = 0;
        int maxValue = 2;
         
        if (target == 2){
            return 1;
        }
        if (target == 3) {
           return 2;
       }
        if (target % 3 == 0){
            maxValue = (int)Math.pow(3,target / 3);
        } else{
            a = target - 2;
            c = a % 3;
              
            maxValue = maxValue * (int)Math.pow(3,a / 3);
            if(0 != c){
                maxValue = maxValue *c;
            }
        }
         
        return maxValue;
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-12-22 11:04 , Processed in 0.031595 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表