计算和的最大积相关题目描述及相关代码

This commit is contained in:
2026-01-14 10:34:26 +08:00
parent d3099866fb
commit ff3680c16a
2 changed files with 59 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
def integer_break(n):
key_map = {1: 1, 2: 1, 3: 2, 4: 4}
if n in key_map:
return key_map.get(n)
# n>5
tmp = n % 3
r = 0
if tmp == 1:
k = (n - 4) // 3
tmp = 4
elif tmp == 2:
k = (n - 2) // 3
else:
k = n // 3
tmp = 1
return pow(3, k) * tmp
print(integer_break(10))

View File

@@ -0,0 +1,39 @@
# 计算和的最大乘积
给定一个正整数n将其拆分为至少两个正整数的和并使这些整数的乘积最大化返回这些加数的最大乘积。
例如10 = 3+3+4结果3x3x4 = 36
问题:如何让加数的乘积最大?
从1到n开始拆解
    1. 1不能拆解
    2. 2 = 1+11
    3. 3 = 2+12
    4. 4 = 2+24不用拆解
    5. 5 = 3+26可以拆解
    6. 6 = 3+39可以拆解
    7. 7 = 3+412可以拆解
    8. 8 = 3+3+218可以拆解······ N. n = 3+3...+x,
规则数字n>4可以将其拆解成n = 3k+x
实现思路(n>4):
    1. n%3 == 1, 3的数量k=(n-4)//3, 结果pow(3, k)x4
    2. n%3 == 2, 3的数量k=n//3, 结果pow(3, k)x(n%3)
    3. n%3 == 0, 3的数量k=n//3, 结果pow(3, k)