将列表中的数字分成 K 等份
Posted
技术标签:
【中文标题】将列表中的数字分成 K 等份【英文标题】:Splitting number in list in K equal parts 【发布时间】:2021-07-07 03:48:25 【问题描述】:我正在尝试解决一个问题,在该问题中,我将列表棒分成由 K 给出的相等大小。
输入:stick = [5, 9, 7], K = 4
这意味着我们有三根长度分别为 5、9 和 7 的棍子。我们希望通过切割这三根棍子得到 K=4 等长的棍子。我们希望得到 K=4 等长的棍子。
更新说明:
从第一根长度为 5 的棍子,我们可以得到一根长度为 4 的棍子。
从第二根长度为 9 的棍子开始,我们可以得到两根长度为 4 的棍子。
从长度为 7 的第三根棍子开始,我们可以得到一根长度为 4 的棍子。
我的代码如下:
stick = [5,7,9]
K=4
for i in range(len(stick)):
T = stick[i]%K
if T !=0:
print (stick[i],T)
else:
print (stick[i])
我的代码给了我下面的输出
5 1
7 3
9 1
但是我如何打印数字+它的加法
5 = 4 + 1
7 = 4 + 3
9 = 4*2 + 1
我的代码只给我输出1,3,1
预期输出:
Input: stick = [5, 9, 7], K = 4
Output: 4
Explanation:
Cut arr[0] = 5 = 4 + 1
Cut arr[1] = 9 = 2 * 4 + 1
Cut arr[2] = 7 = 4 + 3
示例 2:
Input: stick[] = 5, 9, 7, K = 3
Output: 5 \
Explanation:
Cut arr[0] = 5 = 5
Cut arr[1] = 9 = 5 + 4
Cut arr[2] = 5 = 5 + 2
【问题讨论】:
明确一点,我们是专门找整数结果的? @KarlKnechtel 是的 用你自己的话来说,你期望stick[i]%K
计算出什么 - 假设stick[i]
是原始棒之一的长度,K
是所需结果棒的总数?您打算如何解决这个问题 - 您将如何使用铅笔和纸手工解决?
@KarlKnechtel 请注意,他们已经解决了这个问题。问题在于展示结果。
不是吗?巧合的是,正确的木棍长度等于所需木棍的数量。
【参考方案1】:
最好根据不同的条件构造一个字符串,然后打印出来:
stick = [5, 7, 8, 9]
K = 4
for i in range(len(stick)):
T = stick[i] % K
D = stick[i] // K
# Construct the multiplier text (* ...) if necessary
if D > 1:
multiplier = f" * D"
else:
multiplier = ""
# Construct the remainder (+ ...) text if necessary
if T:
remainder = f" + T"
else:
remainder = ""
# Print the final result
print(f"stick[i] = Kmultiplierremainder")
这应该打印出来:
5 = 4 + 1
7 = 4 + 3
8 = 4 * 2
9 = 4 * 2 + 1
更新:此答案假定 K
是问题中发布的原始代码中所暗示的所需长度。如果是拆分次数,则必须相应地更新逻辑,但您的实际问题的答案(即“如何以特定方式打印”)保持不变。
【讨论】:
以上是关于将列表中的数字分成 K 等份的主要内容,如果未能解决你的问题,请参考以下文章