猜猜 python 中的最接近的平方根是什麼
假設我們有一個非負數 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
廣告