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.