ধরুন আমাদের একটি সমকোণ ত্রিভুজের কর্ণ এবং ক্ষেত্রফল আছে, আমাদের এই ত্রিভুজের ভিত্তি এবং উচ্চতা বের করতে হবে। যদি সম্ভব না হয় তাহলে মিথ্যা ফেরত দিন।
সুতরাং, যদি ইনপুট হাইপো =10, এলাকা =24 এর মত হয়, তাহলে আউটপুট হবে (6, 8)।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- hypo_sq :=হাইপো * হাইপো
- s :=(hypo_sq / 2.0) এর বর্গমূল
- maxArea :=বেস s এবং hypotenuse hypotenuse ব্যবহার করে ত্রিভুজের ক্ষেত্রফল গণনা করুন
- যদি এলাকা> maxArea, তারপর
- মিথ্যে ফেরত দিন
- বামে :=0.0, ডানে :=s
- যখন |ডান - বাম|> 0.000001, do
- বেস :=(বাম + ডান) / 2.0
- যদি ত্রিভুজের ক্ষেত্রফল বেস s এবং হাইপোটেনাস হাইপো>=ক্ষেত্রফল ব্যবহার করে, তাহলে
- ডান :=ভিত্তি
- অন্যথায়,
- বাম :=ভিত্তি
- উচ্চতা :=(hypo_sq - base*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)