题解 | #实现抽象方法#

剪绳子(进阶版)

http://www.nowcoder.com/practice/106f666170554379ab1974e5a601e741

长度为n的绳子(n为正整数),截为m段(每段绳子的长度都为正整数),求m段绳子的乘积最大值;

等价于

n=n1+n2+......+nn;求n1n2...nn 的最大值;

对于一个正整数a,若(ad)×d>a(a-d) \times d>a,d为正整数。

则a>(d×d)(d1)(d\times d)\over(d-1);因为d为正整数,所以a>4;

所以ni(i=1,2,3..n)<=4; 即ni的值为2或3或4,

又因为4=2*2; 不妨另ni的值均为2或3, 则n=2a+3bn=2a+3b(a,b为非零整数);

因为3+3=2+2+23+3=2+2+2,且3×3>2×2×2 3 \times 3>2 \times 2 \times2

所以a等于0或1或2; 又因为 2×2>1×32 \times 2>1 \times 3 a最终等于0或1或2; 这样就可以确定 a和b了 也就可以求出最大值了

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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