这题就是把整数拆开一系列的数字之和,使之乘积最大。从题目的提示信息来看发现了规律,就是7-10,严格来讲是8到10,因为我看7反而是个特殊情况。
class Solution(object):
def integerBreak(self, n):
"""
:type n: int
:rtype: int
"""
if n == 2:
return 1
if n == 3:
return 2
if n == 5:
return 6
a = n / 6
b = n % 6
if b == 0:
return 3 ** (2 * a)
if b == 1:
return 12 * ( 3 ** (2 * (a - 1)))
if b == 2:
return 2 * (3 ** (2 * a))
if b == 3:
return 3 * (3 ** (2 * a))
if b == 4:
return 4 * (3 ** (2 * a))
if b == 5:
return 6 * (3 ** (2 * a))
基本都是3*3再乘以后面的数