给一正个数从2开始,2可以分为11小于2,3可以是111或者12均小于2。4分为13,1111,121,22均小于等于4(等价于2),到5就有23大于5,到10因数变大(2,5)但是5可以再分成(2,3)。所以优先分成3是最大的,如果省1,就把前一个3拿出来分成2,2。如果剩2就直接乘2。(根据均值不等式,算数平均值不小于几何平均值,因此均分最大)
代码如下:
def cutRope(self, number):
# write code here
a = number % 3
b = number // 3
z = 0
if a == 0:
z = pow(3, b)
elif a == 1:
z = 4*pow(3, b-1)
else:
z = 2*pow(3, b)
return z