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

पायथन में n लोगों द्वारा फ़्लिप की गई रोशनी की संख्या की गणना करने का कार्यक्रम

मान लीजिए कि हमारे पास एक नंबर n है, मान लीजिए कि एक कमरे में n टॉगल स्विच हैं और उस कमरे में n लोग मौजूद हैं, वे इस प्रकार स्विच फ्लिप करते हैं -

  • व्यक्ति 1 आता है और सभी स्विच फ़्लिप करता है।
  • व्यक्ति 2 आता है और स्विच फ्लिप करता है जो 2:2, 4, 6, ...
  • . के गुणज होते हैं
  • मैं व्यक्ति आता हूं और स्विच को फ्लिप करता हूं जो कि i के गुणज हैं। और इसी तरह।

हमें उन स्विचों की संख्या ज्ञात करनी होगी जो अंत में चालू स्थिति में होंगे।

इसलिए, यदि इनपुट n =5 जैसा है, तो आउटपुट 2 होगा, क्योंकि प्रारंभ में बल्ब [0, 0, 0, 0, 0] हैं।

  • खिलाड़ी 1 के बाद:[1, 1, 1, 1, 1]
  • खिलाड़ी 2 के बाद [1, 0, 1, 0, 1]
  • खिलाड़ी 3 के बाद:[1, 0, 0, 0, 1]
  • खिलाड़ी 4 के बाद:[1, 0, 0, 1, 1]
  • खिलाड़ी 5 के बाद:[1, 0, 0, 1, 0]

अंत में 2 लाइटें चालू अवस्था में हैं

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

  • एल :=0
  • r :=n
  • जबकि l <=r, करते हैं
    • मध्य :=l + तल (r - l)/2
    • यदि मध्य * मध्य <=n <(मध्य + 1)^2, तो
      • मध्य वापसी
    • अन्यथा जब n <मध्य^2, तब
      • r :=मध्य
    • अन्यथा,
      • l :=मध्य + 1

उदाहरण

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

def solve(n):
   l, r = 0, n
   while l <= r:
      mid = l + (r - l) // 2
      if mid * mid <= n < (mid + 1) * (mid + 1):
         return mid
      elif n < mid * mid:
         r = mid
      else:
         l = mid + 1

n = 5
print(solve(n))

इनपुट

5

आउटपुट

2

  1. पायथन में प्रत्येक ब्रैकेट गहराई में वर्णों की संख्या गिनने का कार्यक्रम पायथन में प्रत्येक ब्रैकेट गहराई में वर्णों की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें केवल तीन वर्ण X, (, और ) हैं। स्ट्रिंग में संतुलित कोष्ठक होते हैं और कुछ X के बीच में संभावित रूप से नेस्टेड कोष्ठक भी पुनरावर्ती रूप से हो सकते हैं। हमें s में कोष्ठक की प्रत्येक गहराई पर X की संख्या ज्ञात करनी है, जो सबसे कम गहराई से शुरू होकर सबसे गहर

  1. पायथन में n नोड्स के साथ BST की संख्या गिनने का कार्यक्रम पायथन में n नोड्स के साथ BST की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास अलग-अलग नोड हैं। सभी अलग हैं। हमें यह पता लगाना है कि हम उन्हें कितने तरीकों से व्यवस्थित कर सकते हैं ताकि हम बाइनरी सर्च ट्री बना सकें। जैसा कि हम बाइनरी सर्च ट्री के बारे में जानते हैं, लेफ्ट सबट्री में हमेशा छोटे मान होते हैं और राइट सबट्री में बड़े मान होते हैं। इसे हल कर

  1. पथों की संख्या गिनने का कार्यक्रम जिसका योग अजगर में k है पथों की संख्या गिनने का कार्यक्रम जिसका योग अजगर में k है

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है और दूसरा मान k है, तो हमें उप-चाइल्ड पथों के लिए अद्वितीय नोड की संख्या ज्ञात करनी होगी, जो k के बराबर है। तो, अगर इनपुट पसंद है और k =5, तो आउटपुट 2 होगा, क्योंकि पथ [2, 3] और [1, 4] हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - गिनती :=एक मानच