题解 | #剪绳子#

剪绳子

http://www.nowcoder.com/practice/57d85990ba5b440ab888fc72b0751bf8

联想到 "a+b>=2√ab"
求整数n分成m段后乘积的最大值
a = m / n
b = m % n
n分成m段时的最大值为,max(m) = (a+1)^b * (a)^(m-b)
m 从2到n max(m)值呈现一个尖峰状
当 max(m) <= max(m-1) 时,max(m-1)最大。

class Solution {
public:
    int cutRope(int number) {
        int m,a,b;
        int max_new = 0;
        int max_old = 0;
        for(m = 2;m <= number;m++){
            a = number/m;
            b = number%m;
            max_new = pow(a + 1 , b) * pow(a , m - b);
            if(max_old >= max_new)
                break;
            max_old = max_new;
        }
        return max_old;
    }
};
全部评论

相关推荐

仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务