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

पायथन में अधिकतम K पर LCM वाले सरणी का सबसे लंबा क्रम ज्ञात करें

मान लीजिए कि हमारे पास n अलग-अलग संख्याओं का एक सरणी A है और एक अन्य धनात्मक पूर्णांक K है, तो हमें उस सरणी में सबसे लंबा उप-अनुक्रम खोजना होगा, जिसमें अधिकतम K पर कम से कम सामान्य गुणक (LCM) हों। LCM और उप की लंबाई वापस करने के बाद -अनुक्रम, प्राप्त उप-अनुक्रम के तत्वों के अनुक्रमित (0 से शुरू) के बाद। अन्यथा, वापसी -1.

इसलिए, यदि इनपुट A =[3, 4, 5, 6], K =20 जैसा है, तो आउटपुट LCM =12, लंबाई =3, इंडेक्स =[0,1,3]

होगा।

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

  • n :=A का आकार

  • my_dict :=एक नक्शा

  • मेरे लिए 0 से n की सीमा में, करें

    • my_dict[A[i]] :=my_dict[A[i]] + 1

  • गिनती :=आकार की एक सरणी (k + 1) 0 से भरें

  • my_dict में प्रत्येक कुंजी के लिए, करें

    • यदि कुंजी <=k, तो

      • मैं :=1

      • जबकि कुंजी * i <=k, do

        • गिनती [कुंजी * i]:=गिनती [कुंजी * i] + my_dict [कुंजी]

        • मैं :=मैं + 1

    • अन्यथा,

      • लूप से बाहर आएं

  • एलसीएम:=0, आकार:=0

  • 1 से k + 1 की श्रेणी में i के लिए, करें

    • अगर गिनती [i]> आकार, तो

      • आकार:=गिनती [i]

      • एलसीएम:=मैं

  • अगर एलसीएम 0 के समान है, तो

    • वापसी -1

  • अन्यथा,

    • एलसीएम और आकार प्रदर्शित करें

    • मेरे लिए 0 से n की सीमा में, करें

      • अगर lcm mod A[i] 0 के समान है, तो

        • मैं प्रदर्शित करता हूँ

उदाहरण

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

from collections import defaultdict
def get_seq(A,k):
   n = len(A)
   my_dict = defaultdict(lambda:0)
   for i in range(0, n):
      my_dict[A[i]] += 1
   count = [0] * (k + 1)
   for key in my_dict:
      if key <= k:
         i = 1
         while key * i <= k:
            count[key * i] += my_dict[key]
            i += 1
      else:
         break
   lcm = 0
   size = 0
   for i in range(1, k + 1):
      if count[i] > size:
         size = count[i]
         lcm = i
   if lcm == 0:
      print(-1)
   else:
      print("LCM = {0}, Length = {1}".format(lcm, size))
      print("Index values: ", end = "")
      for i in range(0, n):
         if lcm % A[i] == 0:
            print(i, end = " ")

k = 20
A = [3, 4, 5, 6]
get_seq(A,k)

इनपुट

[3, 4, 5, 6] , 20

आउटपुट

LCM = 12, Length = 3 Index values: 0 1 3

  1. पायथन प्रोग्राम में सरणी का योग ज्ञात करें

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

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

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

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

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