Python程序找出被切割的立方体数量


假设,有一些尺寸为a、b和c的立方体,用它们创建一个新的尺寸为axbxc的盒子。a、b和c是两两互质的;gcd(a, b) = gcd(b,c) = gcd(c, d) = 1。我们必须用一个切片将盒子切成两块,如图片所示。我们必须找出如果盒子以这种方式切割,有多少个立方体被切成两块。我们提供了一个包含三个可能维度的数组,我们必须从中找出答案。

切割方式是通过顶点P、Q和R的平面。

因此,如果输入类似于n = 3,input_array = [[1, 2, 3], [4, 2, 5], [6, 8, 2]],则输出将为[5, 18, 37]

给出了3个不同的实例,我们必须找出被切割的立方体的数量。如果立方体按图示方式切割;分别切割了5、16和37个立方体。

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

  • output := 一个新的列表
  • 对于i从0到n的范围,执行以下操作
    • a := input_array[i, 0]
    • b := input_array[i, 1]
    • c := input_array[i, 2]
    • val := (a * b + a * c + b * c - 1) / 2向下取整 对 1000000007 取模
    • 在output的末尾插入val
  • 返回output

示例

让我们看看以下实现,以便更好地理解:

 实时演示

from math import ceil
def solve(n, input_array):
   output = []
   for i in range(n):
      a, b, c = input_array[i][0], input_array[i][1], input_array[i][2]
      val = ((a * b + a * c + b * c - 1) // 2 % 1000000007)
      output.append(val)
   return output
print(solve(3, [[1, 2, 3], [4, 2, 5], [6, 8, 2]]))

输入

3, [[1, 2, 3], [4, 2, 5], [6, 8, 2]]

输出

[5, 18, 37]

更新于:2021年5月18日

166 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.