【发布时间】:2022-01-20 08:01:03
【问题描述】:
假设我有一个数字100,我需要将它分成 N 个部分,每个部分最初不应超过 30。因此,初始分组将是 (30,30,30)。余数(即 10)将通过在每个组中连续添加 2 来分配到这三个组中,从而确保每个组是 2 的倍数。因此,所需的输出应该类似于 (34,34,32)。
注意:原来的数总是偶数。
我尝试在 Python 中解决这个问题,这就是我想出的。显然,它并没有像我想象的那样工作。它通过向每个组迭代地添加 1(而不是 2,根据需要)来分配剩余部分。
num = 100
parts = num//30 #Number of parts into which 'num' is to be divided
def split(a, b):
result = ([a//b + 1] * (a%b) + [a//b] * (b - a%b))
return(result)
print(split(num, parts))
输出:
[34, 33, 33]
期望的输出:
[34, 34, 32]
【问题讨论】:
-
“最初不应超过 30” 为什么?为什么他们不应该超过30? “最初”有什么特别之处?你不只关心最终结果吗?
-
我正在尝试实现这个算法来绘制一些数据。我需要确保沿轴的条目数不超过 60。在最坏的情况下,如果数字为 59,此算法将确保沿轴只有 59 个条目。
标签: python algorithm math numbers