মান লো যাক আমাদের একটি নন-নেগেটিভ সংখ্যা n আছে, আমাদের একটি সংখ্যা r বের করতে হবে যাতে r * r = n এবং নিকটতম ইন্টিজারে রাউন্ড ডাউন করতে হবে। আমাদের বিল্ট-ইন বর্গমূল ফাংশন ব্যবহার ছাড়া এই সমস্যাটি সমাধান করতে হবে।
उदाहरण के लिए, यदि इनपुट है 1025, तो आउटपुट होगा 32।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- यदि n <= 1, तो
- n वापस करें
- start := 1, end := n
- जब तक start < end, करें
- mid := start + end/2
- यदि mid * mid <= n, तो
- start := mid + 1
- अन्यथा,
- end := mid
- start - 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