Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra tam giác vuông có thể tạo từ diện tích và huyền trong Python

Cho huyền (hypotenuse) và diện tích của tam giác vuông. Tìm đáy và chiều cao. Nếu không thể trả về False.

Ví dụ: hypo = 10, area = 24 → (6, 8).

Giải thuật

  • Tính hypo_sq = hypo^2.
  • Tìm đáy tối đa s = sqrt(hypo_sq/2) (khi tam giác cân).
  • Diện tích tối đa tại đáy s. Nếu diện tích yêu cầu > max → False.
  • Dùng tìm kiếm nhị phân trên đoạn [0, s] để tìm đáy sao cho diện tích bằng yêu cầu.
  • Tính chiều cao từ định lý Pythagoras, làm tròn.

Mã ví dụ

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)