কম্পিউটার

n-এর নিকটতম সংখ্যা খুঁজে বের করার প্রোগ্রাম যেখানে সমস্ত সংখ্যা পাইথনে বিজোড়


ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের পরবর্তী নিকটতম মানটি খুঁজে বের করতে হবে যেখানে সমস্ত সংখ্যা বিজোড়। যখন n-এর কাছাকাছি হওয়ার জন্য দুটি মান বাঁধা থাকে, তখন বড়টি ফেরত দিন।

সুতরাং, যদি ইনপুট n =243 এর মত হয়, তাহলে আউটপুট হবে 199।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • first_even :=-1
  • s :=n স্ট্রিং হিসাবে
  • l :=s এর আকার
  • আমি 0 থেকে l রেঞ্জের জন্য, কর
    • যদি s[i] জোড় হয়, তাহলে
      • first_even :=i
      • লুপ থেকে বেরিয়ে আসুন
  • যদি first_even হয় -1 এর মত, তাহলে
    • রিটার্ন n
  • বড় :=1 + s এর সাংখ্যিক মান [সূচক 0 থেকে i]
  • যদি s[i] "0" এর মত হয়, তাহলে
    • যদি s[i - 1] "1" এর মত হয়, তাহলে
      • small :=s এর সাংখ্যিক মান [সূচী 0 থেকে i] - 1
    • অন্যথায়,
      • small :=s এর সাংখ্যিক মান [সূচী 0 থেকে i] - 11
  • অন্যথায়,
    • small :=s এর সাংখ্যিক মান [সূচী 0 থেকে i] - 1
  • i + 1 থেকে l রেঞ্জের জন্য, করুন
    • বিগ :=বড় কনক্যাটেনেট "1"
    • small :=small concatenate "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

    1. পাইথন ব্যবহার করে সমস্ত নোডে পৌঁছানোর জন্য ন্যূনতম সংখ্যক শীর্ষবিন্দু খুঁজে বের করার প্রোগ্রাম

    2. অজগরে সব গাছ পোড়াতে কত দিন লাগবে তা বের করার কর্মসূচি

    3. একটি সংখ্যার বিজোড় গুণনীয়কের যোগফল খুঁজে বের করার জন্য পাইথন প্রোগ্রাম

    4. একটি সংখ্যার সমস্ত সংখ্যা এটিকে ভাগ করে কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম