সমকোণ ত্রিভুজের হাইপোটেনাস hypo এবং এরিয়া area দেওয়া আছে। বেস এবং হাইট বের করতে হবে। সম্ভব না হলে False ফেরত দিন।
উদাহরণ
ইনপুট: hypo = 10, area = 24
আউটপুট: (6, 8)
অ্যালগরিদম (বাইনারি সার্চ)
- সর্বোচ্চ সম্ভব এরিয়া বের করুন (যখন বেস = হাইপোটেনাস/√২)।
- যদি দেওয়া এরিয়া তার চেয়ে বড় হয়, তবে
False। - বাইনারি সার্চ দিয়ে বেস বের করুন যাতে এরিয়া মেলে।
- হাইট = √(hypo² - 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) > 1e-6:
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)) # Output: (6, 8)
ইনপুট
10, 24
আউটপুট
(6, 8)