Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เดาสแควร์รูทที่ใกล้ที่สุดใน Python


สมมติว่าเรามีจำนวนไม่เป็นลบ n เราต้องหาจำนวน r ที่ r * r =n และเราต้องปัดเศษลงเป็นจำนวนเต็มที่ใกล้เคียงที่สุด เราต้องแก้ปัญหานี้โดยไม่ต้องใช้ฟังก์ชันสแควร์รูทในตัว

ดังนั้นหากอินพุตเป็น 1025 เอาต์พุตจะเป็น 32

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า n <=1 แล้ว
    • ส่งคืน n
  • เริ่ม :=1 สิ้นสุด :=n
  • ขณะเริ่ม <สิ้นสุด ทำ
    • กลาง :=เริ่ม + สิ้นสุด/2
    • ถ้า mid * mid <=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