在 Python 中寻找婴儿和大步到达目的地所需的最佳步数的程序

假设我们有一个查询 Q 的列表,其中每个查询 Q[i] 包含一个三元组 [a_i, b_i 和 d_i]。假设我们最初处于位置 (0, 0),然后在一步中我们可以从某个位置 (x1, y1) 移动到 (x2, y2),其中这两个点之间的欧几里得距离至少为 a,至多为 b。现在对于每个查询,我们必须找到从 (0, 0) 到达 (d_i, 0) 所需的最少步数。

所以,如果输入像 Q = [(2,3,1), (1,2,0), (3,4,11)],那么输出将是 [2, 0, 3] 因为对于从 (0, 0) 的第一个查询 a = 2 我们可以去 $\left(\frac{1}{2},\frac{\sqrt{15}}{2}\right)$然后 (1, 0)所以我们需要两个步骤,所以输出是 2,对于下一个查询 d 是 0,所以我们不需要移动任何步骤所以输出是 0。对于第三个 b = 4 和 a = 3 move (0, 0 ) 到 (4, 0) 然后到 (8, 0) 然后再到 (11, 0)。

示例

让我们看看以下实现以获得更好的理解 -

from math import ceil

def steps(a, b, d):

   mmin = min(a, b)

   mmax = max(a, b)

   if d is 0:

      return 0

   if d in [mmin, mmax]:

      return 1

   if d < mmax:

      return 2

   return ceil(d / mmax)

def solve(Q):

   res = []

   for q in Q:

      a, b, d = q

      res.append(steps(a, b, d))

   return res

Q = [(2,3,1), (1,2,0), (3,4,11)]

print(solve(Q))

输入

[(2,3,1), (1,2,0), (3,4,11)]
输出结果
[2, 0, 2.0]

以上是 在 Python 中寻找婴儿和大步到达目的地所需的最佳步数的程序 的全部内容, 来源链接: utcz.com/z/322603.html

回到顶部