用Python檢查給定面積和斜邊是否能構成直角三角形


假設我們已知直角三角形的斜邊和麵積,我們需要求出這個三角形的底邊和高。如果無法構成直角三角形,則返回False。

例如,如果輸入斜邊 hypo = 10,面積 area = 24,則輸出為 (6, 8)。

為了解決這個問題,我們將遵循以下步驟:

  • hypo_sq := hypo * hypo
  • s := (hypo_sq / 2.0) 的平方根
  • maxArea := 使用底邊 s 和斜邊 hypo 計算三角形的面積
  • 如果 area > maxArea,則
    • 返回 False
  • left := 0.0, right := s
  • 當 |right - left| > 0.000001 時,執行以下操作:
    • base := (left + right) / 2.0
    • 如果使用底邊 s 和斜邊 hypo 計算的三角形面積 >= area,則
      • right := base
    • 否則,
      • left := base
  • height := (hypo_sq - base*base) 的平方根,並四捨五入到最接近的整數
  • 將 base 四捨五入到最接近的整數
  • 返回 base 和 height

讓我們來看下面的實現來更好地理解:

示例程式碼

線上演示

from math import sqrt
 
def calculate_area(b, h):
   hei = sqrt(h*h - b*b);
   return 0.5 * b * hei

def solve(hypo, area):
   hypo_sq = hypo * hypo
   s = sqrt(hypo_sq / 2.0)
   maxArea = calculate_area(s, hypo)

   if area > maxArea:
      return False
     
   left = 0.0
   right = s
     
   while abs(right - left) > 0.000001:
      base = (left + right) / 2.0
      if calculate_area(base, hypo) >= area:
         right = base
      else:
         left = base
     
   height = round(sqrt(hypo_sq - base*base))
   base = round(base)
   return base, height

hypo = 10
area = 24
print(solve(hypo, area))

輸入

10, 24

輸出

(6, 8)

更新於:2021年1月15日

瀏覽量:186

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.