【问题标题】:Splitting number in list in K equal parts将列表中的数字分成 K 等份
【发布时间】: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 请注意,他们已经解决了这个问题。问题在于展示结果。
  • 不是吗?巧合的是,正确的木棍长度等于所需木棍的数量。

标签: python python-3.x math logic


【解决方案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]} = {K}{multiplier}{remainder}")

这应该打印出来:

5 = 4 + 1
7 = 4 + 3
8 = 4 * 2
9 = 4 * 2 + 1

更新:此答案假定 K 是问题中发布的原始代码中所暗示的所需长度。如果是拆分次数,则必须相应地更新逻辑,但您的实际问题的答案(即“如何以特定方式打印”)保持不变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 2011-05-06
    • 2011-05-08
    • 2021-01-27
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多