在Python中查找数字的最大复合被加数数
假设我们有一个给定的数N,它在(1<=N<=10^9)范围内,我们必须将N表示为最大可能数量的复合被加数的总和并返回这个最大数,否则当我们找不到任何拆分,然后返回-1。
因此,如果输入像16,那么输出将是4,因为16可以写为4+4+4+4或8+8,但是(4+4+4+4)具有最大被加数。
在线示例
让我们看看以下实现以获得更好的理解-
global max_val
max_val = 16
def pre_calc():
table = [-1 for i in range(max_val)]
table[0] = 0
v = [4, 6, 9]
for i in range(1, max_val, 1):
for k in range(3):
j = v[k]
if (i >= j and table[i - j] != -1):
table[i] = max(table[i], table[i - j] + 1)
return table
def max_summ(table, n):
if (n < max_val):
return table[n]
else:
t = int((n - max_val) / 4)+ 1
return t + table[n - 4 * t]
n = 16
table = pre_calc()
print(max_summ(table, n))输入
16输出结果
4
热门推荐
10 祖国七十华诞简短祝福语
11 20岁简短生日祝福语
12 创业失败返乡祝福语简短
13 圣诞祝福语简短小学
14 比赛结束花束祝福语简短
15 新郎表白成语祝福语简短
16 长辈见面花束祝福语简短
17 邻家生小孩祝福语简短
18 男生打球祝福语简短霸气