题解 | #剪绳子#

剪绳子

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;
    }
};
全部评论

相关推荐

06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
frutiger:逆天,我家就安阳的,这hr咋能说3k的,你送外卖不比这工资高得多?还说大厂来的6k,打发叫花子的呢?这hr是怎么做到说昧良心的话的
找工作时遇到的神仙HR
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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