在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
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练