Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

सभी अंक विषम होने वाली 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 := s[0 से i तक का सूचकांक] का संख्यात्मक मान + 1
  • यदि 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 से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें? Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें?

    डायरेक्टेड एसाइक्लिक ग्राफ (DAG) में जिन वर्टेक्सेज़ का इन-डिग्री 0 है, उनसे सभी नोड्स पहुंचे जा सकते हैं। एल्गोरिदम सभी नोड्स का सेट बनाएं (0 से n-1)। सभी एजेज़ के डेस्टिनेशन नोड्स (v) का सेट बनाएं। सोर्स नोड्स = सभी नोड्स - डेस्टिनेशन नोड्स (यानी इन-डिग्री 0 वाले)। यही मिनिमम वर्टेक्स सेट है। उद

  1. सभी पेड़ों को जलाने में लगने वाले दिनों की संख्या ज्ञात करने का पायथन प्रोग्राम सभी पेड़ों को जलाने में लगने वाले दिनों की संख्या ज्ञात करने का पायथन प्रोग्राम

    मान लीजिए हमारे पास एक 2D मैट्रिक्स है जो एक जंगल को दर्शाता है जहां तीन प्रकार के सेल हैं: 0 खाली सेल, 1 पेड़ सेल, 2 जलता हुआ पेड़ सेल। हर दिन, एक पेड़ आग पकड़ लेता है जब उसके आसन्न (ऊपर, नीचे, बाएं, दाएं, विकर्ण नहीं) पेड़ में आग लगी हो। हमें वह दिनों की संख्या ढूंढनी है जो हर पेड़ को जलाने में ल

  1. पायथन प्रोग्राम: संख्या के ऑड फैक्टर्स का योग ढूंढें पायथन प्रोग्राम: संख्या के ऑड फैक्टर्स का योग ढूंढें

    इस लेख में, हम नीचे दिए गए प्रॉब्लम स्टेटमेंट के समाधान के बारे में सीखेंगे: प्रॉब्लम स्टेटमेंट एक नंबर इनपुट n दिए जाने पर, कार्य संख्या के ऑड फैक्टर्स का योग निकालना है। यहां हमें पहले सभी इवन फैक्टर्स को समाप्त करने की आवश्यकता है। सभी इवन फैक्टर्स को हटाने के लिए, हम n को बार-बार तब तक विभाजित