ধরুন আমাদের একটি সংখ্যা x আছে, এবং x একটি অ-ঋণাত্মক সংখ্যা। কোনো লাইব্রেরি ফাংশন ব্যবহার না করেই x এর বর্গমূল বের করতে হবে। তাই sqrt(x) মূল্যায়ন করার জন্য আমাদের নিজস্ব ফাংশন তৈরি করতে হবে। এই ফাংশনে, আউটপুটের দশমিক সংখ্যা ছেঁটে ফেলা হবে।
ধরুন x এর মান 4, তাহলে ফলাফল হবে 2 যদি x 8 হয়, তাহলে ফলাফলটিও 2 হবে, যেমন sqrt(8) হল 2.82842। কিন্তু আমরা শুধুমাত্র পূর্ণসংখ্যা অংশ নেব।
এটি সমাধান করতে, এই ধাপগুলি অনুসরণ করুন -
- আরম্ভ করুন l =1, এবং h =x + 1, উত্তর =0
- যখন h> l, do
- মধ্য =(h + l)/2
- যদি mid*mid <=x হয়, তাহলে l :=mid + 1, উত্তর =mid
- অন্যথায় h =মধ্য
- উত্তর ফেরত দিন
আসুন আরও ভালভাবে বোঝার জন্য বাস্তবায়ন দেখি
উদাহরণ (পাইথন)
class Solution(object): def mySqrt(self, x): """ :type x: int :rtype: int """ low = 1 high = x+1 ans = 0 while high>low: mid = (high+low)//2 print(low,mid,high) if mid*mid<=x: low = mid+1 ans = mid else: high = mid return ans ob1 = Solution() print(ob1.mySqrt(4)) print(ob1.mySqrt(16)) print(ob1.mySqrt(7)) print(ob1.mySqrt(15))
ইনপুট
print(ob1.mySqrt(4)) print(ob1.mySqrt(16)) print(ob1.mySqrt(7)) print(ob1.mySqrt(15))
আউটপুট
2 4 2 3