Python程序:计算达到阈值百分比所需的五星评价数量


假设我们有一个名为reviews的列表和一个阈值t。reviews[i]中的每个项目都具有[x, y],表示产品i有x个五星级评价和y个评价。我们必须找到我们需要额外添加的五星级评价的最小数量,以便这些项目的五星级评价百分比至少为t%。

因此,如果输入类似于reviews = [[3, 4],[1, 2],[4, 6]] threshold = 78,则输出将为7,因为总共有8个五星级评价和12个评价。为了达到78%的五星级评价,我们需要7个额外的五星级评价。

为了解决这个问题,我们将遵循以下步骤:

  • a := 0, b := 0

  • 对于reviews中的每个五星级计数c和评价计数d,执行以下操作:

    • a := a + c

    • b := b + d

  • 如果 a * 100 >= t * b,则

    • 返回 0

  • delta := t * b - 100 * a

  • 返回 (delta +(99 - t))/(100 - t) 的向下取整结果

示例

让我们看看下面的实现来更好地理解

def solve(reviews, t):
   a = 0
   b = 0
   for c, d in reviews:
      a += c
      b += d
   if a * 100 >= t * b:
      return 0
   delta = t * b - 100 * a
   return (delta + (99 - t)) // (100 - t)

reviews = [
   [3, 4],
   [1, 2],
   [4, 6]
]
t = 78
print(solve(reviews, t))

输入

[[3, 4], [1, 2],[4, 6] ],78

输出

7

更新于:2021年10月11日

670 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告