剑指67:剪绳子

 

 

题目描述

给你一根长度为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

 

 

class Solution {
public:
    int cutRope(int number) {
        if (number <2)
            return 0;
        if (number ==2)
            return 1;
        if (number==3)
            return 2;
     int timesOf3=number/3;
        if (number -timesOf3*3 ==1)
            timesOf3--;
        int timesOf2=(number-timesOf3*3)/2;
        
        return (int) (pow(3,timesOf3))*(int) (pow(2,timesOf2));
    }
};

posted on 2020-08-02 20:37  滚雪球效应  阅读(84)  评论(0编辑  收藏  举报