Giả sử chúng ta có cạnh huyền và diện tích của một tam giác vuông, chúng ta phải tìm đáy và chiều cao của tam giác này. Nếu không thể trả lại False.
Vì vậy, nếu đầu vào giống như hypo =10, area =24, thì đầu ra sẽ là (6, 8).
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- hypo_sq:=hypo * hypo
- s:=căn bậc hai của (hypo_sq / 2.0)
- maxArea:=tính diện tích hình tam giác bằng cách sử dụng cơ sở s và cạnh huyền hypo
- if area> maxArea, then
- trả về Sai
- left:=0.0, right:=s
- trong khi | phải - trái |> 0,000001, thực hiện
- cơ sở:=(trái + phải) / 2.0
- nếu diện tích tam giác sử dụng cơ sở s và cạnh huyền hypo> =diện tích, thì
- right:=base
- nếu không,
- left:=base
- height:=căn bậc hai của (hypo_sq - base * base) và làm tròn đến số nguyên gần nhất
- làm tròn đến số nguyên gần nhất của cơ số
- trả về cơ sở và chiều cao
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Mã mẫu
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))
Đầu vào
10, 24
Đầu ra
(6, 8)