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

Python में सीढ़ियों का उपयोग करके अगली मंजिल तक पहुंचने के तरीकों की संख्या खोजने का प्रोग्राम


मान लीजिए N चरणों वाली एक सीढ़ी है। कोई या तो चरण दर चरण जा सकता है, या प्रत्येक चरण पर, कोई अधिकतम N चरणों की छलांग लगा सकता है। हमें उन तरीकों की संख्या ढूंढनी है जिनसे हम शीर्ष मंजिल तक जा सकते हैं। N मान बड़ा हो सकता है हम केवल तरीकों की संख्या के पहले और अंतिम K अंकों में रुचि रखते हैं।

तो, यदि इनपुट N = 10, k = 2 है, तो आउटपुट 63 होगा क्योंकि 10 चरण हैं, यदि S शीर्ष तक जाने के तरीकों की संख्या है, तो S को wxyz के रूप में मानें। तो, wx + yz का योग 63 है।

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

  • N := N - 1
  • c := 2 * ceiling of (k + log(N);base10)
  • e := N, b := 2, s := 1
  • जब e > 0, करें
    • यदि e विषम है, तो
      • s := (s*b) के पहले p-c अंक जहां p, s*b में अंकों की संख्या है
    • e := floor of e/2
    • b := (b*b) के पहले p-c अंक जहां p, b*b में अंकों की संख्या है
  • s := s के पहले p - k अंक, जहां p, s में अंकों की संख्या है
  • r := s + (2^N) mod 10^k
  • r वापस करें

उदाहरण

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

from math import log10,ceil def solve(N,k): N -= 1 c = 2*ceil(k + log10(N)) e = N b = 2 s = 1 while e > 0: if e % 2 == 1: s = int(str(s*b)[:c]) e //=2 b = int(str(b*b)[:c]) s = str(s)[:k] r = int(s) + pow(2, N, 10**k) return r N = 10 k = 2 print(solve(N,k))

इनपुट

10, 2 

आउटपुट

63

  1. Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें? Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें?

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

  1. Python से सबट्री में समान लेबल वाले नोड्स की संख्या कैसे ढूंढें? Python से सबट्री में समान लेबल वाले नोड्स की संख्या कैसे ढूंढें?

    रूटेड ट्री में प्रत्येक नोड के लिए, उसके सबट्री में उसी लेबल वाले नोड्स की संख्या ढूंढें (लेबल्स लोअरकेस लेटर्स)। एल्गोरिदम एज लिस्ट से ग्राफ बनाएं (अनडायरेक्टेड)। लेबल मैप बनाएं। रिकर्सिव DFS r(ni): चिल्ड्रन के काउंटर्स मर्ज करें, अपना लेबल जोड़ें, R[ni] = count[label]। पैरेंट लिंक हटाकर साइकिल अव

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्