联想到 "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;
}
};
京公网安备 11010502036488号