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

पायथन में ठीक दो वस्तुओं के साथ अच्छे भोजन की गणना करने का कार्यक्रम

मान लीजिए कि हमारे पास डेली [i] ith भोजन की स्वादिष्टता है, तो हमें इस सूची से विभिन्न अच्छे भोजन की संख्या का पता लगाना होगा। यदि उत्तर बहुत बड़ा है, तो परिणाम मॉड्यूल 10^9 + 7 लौटाएं। यहां एक अच्छे भोजन का अर्थ है एक ऐसा भोजन जिसमें स्वादिष्टता के योग के साथ बिल्कुल दो अलग-अलग खाद्य पदार्थ होते हैं जो दो की शक्ति है। एक अच्छा भोजन बनाने के लिए हम दो अलग-अलग खाद्य पदार्थों का चयन कर सकते हैं।

इसलिए, यदि इनपुट डेली =[1,7,3,6,5] जैसा है, तो आउटपुट 3 होगा क्योंकि हम जोड़े (1,3), (1,7) और (3,5) बना सकते हैं जिनकी योग 2 की शक्ति है।

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

  • म :=10^9 + 7
  • गिनती :=प्रत्येक स्वादिष्टता मूल्यों की आवृत्ति वाला नक्शा
  • उत्तर:=0
  • प्रत्येक आइटम के लिए मैं गिनती में, करता हूँ
    • 0 से 21 की सीमा में n के लिए, करें
      • j:=(2^n) - i
      • अगर j गिनती में है, तो
        • यदि i, j के समान है, तो
          • उत्तर:=उत्तर + गिनती[i] *(गिनती[i]-1)
        • अन्यथा,
          • उत्तर:=उत्तर + गिनती[i] * गिनती[j]
  • (Ans/2) mod m का रिटर्न भागफल

उदाहरण

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

from collections import Counter
def solve(deli):
   m = 10**9 + 7
   count = Counter(deli)
   ans = 0
   for i in count:
      for n in range(22):
         j = (1<<n)-i
         if j in count:
            if i == j:
               ans += count[i] * (count[i]-1)
            else:
               ans += count[i] * count[j]
   return (ans // 2) % m

deli = [1,7,3,6,5]
print(solve(deli))

इनपुट

[1,7,3,6,5]

आउटपुट

3

  1. पायथन में बाइनरी स्ट्रिंग में सभी 1s के साथ सबस्ट्रिंग गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है। हमें उन सबस्ट्रिंग्स की संख्या ज्ञात करनी है जिनमें केवल 1 है। अगर उत्तर बहुत बड़ा है, तो परिणाम को 10^9+7 से संशोधित करें। इसलिए, यदि इनपुट s =100111 जैसा है, तो आउटपुट 7 होगा, क्योंकि केवल 1 वाले सबस्ट्रिंग [1, 1, 1, 1, 11 हैं। , 11 और 111] इसे हल कर

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

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

  1. एक सरणी में व्युत्क्रमों की गणना करने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें आवश्यक व्युत्क्रम की गणना करने और उसे प्रदर्शित करने की आवश्यकता है। सरणी को क्रमबद्ध करने के लिए कितने चरणों की आवश्यकता है, इसकी गणना करके उलटा गणना प्राप्त की जाती है। आइए अब नीचे दिए