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