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

โปรแกรมหาจำนวนที่ใกล้ที่สุดของ n โดยที่ตัวเลขทั้งหมดเป็นเลขคี่ใน python


สมมุติว่าเรามีตัวเลข n เราต้องหาค่าถัดไปที่ใกล้เคียงที่สุดโดยที่ตัวเลขทั้งหมดเป็นเลขคี่ เมื่อมีค่าสองค่าที่ผูกกับ n มากที่สุด ให้คืนค่าที่มากกว่า

ดังนั้น หากอินพุตเท่ากับ n =243 เอาต์พุตจะเป็น 199

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

  • first_even :=-1
  • s :=n เป็นสตริง
  • l :=ขนาดของ s
  • สำหรับฉันในช่วง 0 ถึง l ทำ
    • ถ้า s[i] เป็นคู่ ดังนั้น
      • first_even :=ฉัน
      • ออกมาจากวงจร
  • ถ้า first_even เหมือนกับ -1 แล้ว
    • ส่งคืน n
  • ใหญ่ :=1 + ค่าตัวเลขของ s[จากดัชนี 0 ถึง i]
  • ถ้า s[i] เหมือนกับ "0" แล้ว
    • ถ้า s[i - 1] เหมือนกับ "1" แล้ว
      • เล็ก :=ค่าตัวเลขของ s[จากดัชนี 0 ถึง i] - 1
    • มิฉะนั้น
      • เล็ก :=ค่าตัวเลขของ s[จากดัชนี 0 ถึง i] - 11
  • มิฉะนั้น
    • เล็ก :=ค่าตัวเลขของ s[จากดัชนี 0 ถึง i] - 1
  • สำหรับฉันในช่วง i + 1 ถึง l ทำ
    • ใหญ่ :=ใหญ่ต่อกัน "1"
    • เล็ก :=เล็กต่อกัน "9"
  • ใหญ่ :=ค่าตัวเลขของใหญ่ เล็ก :=ค่าตัวเลขของเล็ก
  • d2 :=ใหญ่ - n, d1 :=n - เล็ก
  • ถ้า d1
  • ผลตอบแทนน้อย
  • มิฉะนั้นเมื่อ d1>=d2 แล้ว
    • ผลตอบแทนมหาศาล
  • ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    ตัวอย่าง

    class Solution:
       def solve(self, n):
          first_even = -1
          s = str(n)
          l = len(s)
          for i in range(l):
             if int(s[i]) % 2 == 0:
                first_even = i
                break
          if first_even == -1:
             return n
          big = str(int(s[: i + 1]) + 1)
          if s[i] == "0":
             if s[i - 1] == "1":
                small = str(int(s[: i + 1]) - 1)
             else:
                small = str(int(s[i : i + 1]) - 11)
          else:
             small = str(int(s[: i + 1]) - 1)
    
          for i in range(i + 1, l):
             big += "1"
             small += "9"
    
          big, small = int(big), int(small)
          d2 = big - n
          d1 = n - small
          if d1 < d2:
             return small
          elif d1 >= d2:
             return big
         
    ob = Solution()
    n = 243
    print(ob.solve(n))

    อินพุต

    243

    ผลลัพธ์

    199