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

पायथन में क्लम्सी फैक्टोरियल

जैसा कि हम जानते हैं कि एक सकारात्मक पूर्णांक n का फैक्टोरियल n से कम या बराबर सभी सकारात्मक पूर्णांकों का गुणनफल है। तो factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1। हम एक क्लम्सी फैक्टोरियल खोजने की कोशिश करेंगे: घटते क्रम में पूर्णांकों का उपयोग करके, हम गुणा ऑपरेशन को ऑपरेशन के एक निश्चित रोटेशन के लिए स्वैप करते हैं: गुणा (*), भाग (/), जोड़ (+) और घटाव (-) इस क्रम में।

क्लम्सी फैक्टोरियल इस तरह है clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1। हालांकि, ये ऑपरेशन अभी भी अंकगणित के सामान्य ऑपरेशन क्रम का उपयोग करके लागू होते हैं: हम किसी भी जोड़ या घटाव चरण से पहले सभी गुणा और भाग चरणों को करते हैं, और गुणा और भाग चरणों को बाएं से दाएं संसाधित किया जाता है। हम जिस भाग का उपयोग कर रहे हैं वह फ्लोर डिवीजन है जैसे कि 10 * 9 / 8 बराबर 11 होता है। यह गारंटी देता है कि परिणाम एक पूर्णांक है।

इसलिए उदाहरण के लिए, यदि इनपुट 10 है, तो परिणाम 12 होगा, जैसे 12 = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1

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

  • ऑपरेशन सरणी परिभाषित करें, और ऑपरेटर्स [*, /, +, -] संग्रहीत करें, एक खाली स्टैक बनाएं, और N को स्टैक में डालें।
  • index := 0
  • N को 1 से घटाएं
  • जबकि N 0 नहीं है:
    • यदि operation[index] = *, तो
      • यदि स्टैक का शीर्ष तत्व >= 0 है, तो स्टैक के शीर्ष तत्व को top_element := N * top_element के रूप में अपडेट करें
      • अन्यथा स्टैक का शीर्ष तत्व := -1 * |N * स्टैक शीर्ष तत्व|
    • अन्यथा यदि operation[index] / है, तो
      • यदि स्टैक का शीर्ष तत्व >= 0 है, तो स्टैक के शीर्ष तत्व को top_element := top_element / N के रूप में अपडेट करें
      • अन्यथा स्टैक का शीर्ष तत्व := -1 * |स्टैक शीर्ष तत्व / N|
    • अन्यथा यदि operation[index] + है, तो
      • N को स्टैक में डालें
    • अन्यथा (-1 * N) को स्टैक में डालें
    • index := (index + 1) mod ऑपरेशन सरणी की लंबाई
    • N को 1 से घटाएं
  • स्टैक तत्वों का योग लौटाएं।

उदाहरण

class Solution(object):
    def clumsy(self, N):
        operations = ["*", "/", "+", "-"]
        stack = []
        index = 0
        stack.append(N)
        N -= 1
        while N:
            if operations[index] == "*":
                if stack[-1] >= 0:
                    stack[-1] *= N
                else:
                    stack[-1] = -1 * (abs(stack[-1]) * N)
            elif operations[index] == "/":
                if stack[-1] >= 0:
                    stack[-1] //= N
                else:
                    stack[-1] = -1 * (abs(stack[-1]) // N)
            elif operations[index] == "+":
                stack.append(N)
            else:
                stack.append(-1 * N)
            index = (index + 1) % len(operations)
            N -= 1
        return sum(stack)

ob = Solution()
print(ob.clumsy(10))

इनपुट

10

आउटपुट

12
  1. पायथन प्रोग्राम: संख्या का फैक्टोरियल पायथन प्रोग्राम: संख्या का फैक्टोरियल

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट – हमारा कार्य n का फैक्टोरियल निकालना है। एक नॉन-नेगेटिव नंबर का फैक्टोरियल निम्न द्वारा दिया जाता है: n! = n * n-1 * n-2 * n-3 * n-4 * ... * 3 * 2 * 1 समस्या के दो संभावित समाधान हैं:

  1. पायथन में issuperset() फंक्शन पायथन में issuperset() फंक्शन

    इस लेख में, हम पायथन में issuperset() और विभिन्न क्षेत्रों में इसके कार्यान्वयन के बारे में जानेंगे।यह मेथड बूलियन True वापस करता है यदि सेट B के सभी तत्व सेट A के सभी तत्वों को समाहित करते हैं जिसे तर्क के रूप में पारित किया जाता है और झूठा वापस करता है यदि A के सभी तत्व B में मौजूद नहीं हैं।इसका म

  1. - पायथन में रिकर्सन और बैकट्रैकिंग क्या है?

    रिकर्सन 0। बैकट्रैकिंग बैकट्रैकिंग कुछ कम्प्यूटेशनल समस्याओं के समाधान खोजने के लिए एक सामान्य एल्गोरिदम है, जो समाधानों के लिए विकल्पों को बढ़ाकर बनाता है, और उन ट्रैक्स की निरंतर प्रोसेसिंग को अस्वीकार करता है जो असंभव समाधानों की ओर ले जाएंगे। बैकट्रैकिंग हमें पिछले विकल्पों को पूर्ववत करने की