কম্পিউটার টিউটোরিয়াল

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


मान लीजिए हमारे पास एक संख्या n है, हमें अगला निकटतम मान ढूंढना है जहां सभी अंक विषम हों। जब दो मान n के निकटतम होने के लिए बंधे हों, तो बड़ा वाला लौटाएं।

तो, अगर इनपुट n = 243 है, तो आउटपुट 199 होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:

  • first_even := -1
  • s := n को स्ट्रिंग के रूप में
  • l := s का आकार
  • i को 0 से l तक के लिए, करें
    • अगर s[i] सम है, तो
      • first_even := i
      • लूप से बाहर आएं
  • अगर first_even -1 के समान है, तो
    • n लौटाएं
  • big := 1 + s[इंडेक्स 0 से i तक] का संख्यात्मक मान
  • अगर s[i] "0" के समान है, तो
    • अगर s[i-1] "1" के समान है, तो
      • small := s[इंडेक्स 0 से i तक] का संख्यात्मक मान - 1
    • अन्यथा,
      • small := s[इंडेक्स i से i+1 तक] का संख्यात्मक मान - 11
  • अन्यथा,
    • small := s[इंडेक्स 0 से i तक] का संख्यात्मक मान - 1
  • i को i+1 से l तक के लिए, करें
    • big := big के साथ "1" जोड़ें
    • small := small के साथ "9" जोड़ें
  • big := big का संख्यात्मक मान, small := small का संख्यात्मक मान
  • d2 := big - n, d1 := n - small
  • अगर d1 < d2, तो
    • small लौटाएं
  • अन्यथा जब d1 >= d2, तो
    • big लौटाएं

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

उदाहरण

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. Python দিয়ে সব নোডে পৌঁছাতে মিনিমাম ভার্টেক্স বের করার প্রোগ্রাম

  2. পাইথনে সব গাছ জ্বলে যাওয়ার জন্য কত দিন লাগবে তা বের করার প্রোগ্রাম

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

  4. পাইথন প্রোগ্রাম: একটি সংখ্যার সব অঙ্ক সেটি বিভাজ্য কিনা যাচাই করা