ধরুন আমাদের একটি অ-ঋণাত্মক সংখ্যা n আছে, আমাদের একটি সংখ্যা r খুঁজে বের করতে হবে যেমন r * r =n এবং আমাদের নিকটতম পূর্ণসংখ্যাতে বৃত্তাকার করতে হবে। বিল্টিন স্কয়ার-রুট ফাংশন ব্যবহার না করেই আমাদের এই সমস্যার সমাধান করতে হবে।
সুতরাং, যদি ইনপুট 1025 এর মত হয়, তাহলে আউটপুট হবে 32।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি n <=1 হয়, তাহলে
- রিটার্ন n
- শুরু :=1, শেষ :=n
- শুরু করার সময় <শেষ করুন, করুন
- মধ্য :=শুরু + শেষ/2
- যদি মধ্য * মধ্য <=n হয়, তাহলে
- শুরু :=মধ্য + 1
- অন্যথায়,
- শেষ :=মধ্য
- রিটার্ন শুরু - 1
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, n): if n <= 1: return n start, end = 1, n while start < end: mid = start + end >> 1 if mid * mid <= n: start = mid + 1 else: end = mid return start - 1 ob = Solution() print(ob.solve(1025))
ইনপুট
1025
আউটপুট
32