मान लीजिए हमारे पास एक समकोण त्रिभुज का कर्ण और क्षेत्रफल है, हमें इस त्रिभुज का आधार और ऊंचाई ढूंढनी है। यदि संभव नहीं है तो False लौटाएं।
उदाहरण के लिए, यदि hypo = 10, area = 24 है, तो आउटपुट (6, 8) होगा।
हल करने का तरीका
- hypo_sq := hypo²
- s := √(hypo_sq / 2) - अधिकतम क्षेत्रफल के लिए आधार
- maxArea := आधार s और कर्ण hypo से त्रिभुज का क्षेत्रफल
- यदि area > maxArea, तो False लौटाएं
- बाइनरी सर्च से आधार ढूंढें:
- left := 0.0, right := s
- जब तक |right - left| > 0.000001:
- base := (left + right) / 2
- यदि आधार base से क्षेत्रफल ≥ दिया गया क्षेत्रफल, तो right := base
- अन्यथा left := base
- ऊंचाई := √(hypo_sq - base²) को निकटतम पूर्णांक में राउंड करें
- आधार को भी राउंड करें
- आधार और ऊंचाई लौटाएं
उदाहरण कोड
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)