मान लीजिए कि हमारे पास एक गैर-ऋणात्मक संख्या 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