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

पायथन में दिए गए मोनोटोनिक अनुक्रम में तत्व की स्थिति खोजें


मान लीजिए कि हमारे पास एक संख्या l और एक मोनोटोनिक बढ़ते क्रम f(m) है, जहां f(m) =am + bm [log2(m)] + cm^3 और (a =1, 2, 3,…), (बी =1, 2, 3,…), (सी =0, 1, 2, 3,…)

यहाँ [log2(m)] आधार 2 का लॉग है और मान को नीचे की ओर गोल करता है। तो,

अगर एम =1, मान 0 है।

अगर एम =2-3, मान 1 है।

अगर एम =4-7, मान 2 है।

अगर एम =8-15, मान 3 है और इसी तरह, पर

हमें m का मान इस प्रकार ज्ञात करना है कि f(m) =l, यदि l अनुक्रम में मौजूद नहीं है तो हमें 0 प्रिंट करना होगा। हमें यह ध्यान रखना होगा कि मान इस तरह से हैं कि उनका प्रतिनिधित्व किया जा सकता है 64 बिट और तीन पूर्णांक a, b और c 100 से कम या उसके बराबर।

इसलिए, यदि इनपुट a =2, b =1, c =1, l =12168587437017 जैसा है, तो आउटपुट 23001 होगा f(23001) =12168587437017

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

  • SMALLER_VAL :=1000000

  • LARGER_VAL :=1000000000000000

  • फ़ंक्शन को हल करें () परिभाषित करें। इसमें a, b, c, n

    . लगेगा
  • उत्तर:=ए * एन

  • lg_val :=n के लघुगणक आधार 2 का तल

  • उत्तर:=उत्तर + बी * एन * lg_val

  • उत्तर:=उत्तर + सी * एन^3

  • वापसी उत्तर

  • मुख्य विधि से, निम्न कार्य करें -

  • शुरू :=1

  • अंत:=SMALLER_VAL

  • यदि c, 0 के समान है, तो

    • अंत:=LARGER_VAL

  • उत्तर :=0

  • प्रारंभ करते समय <=अंत, करें

    • मध्य:=(शुरू + अंत) / 2 (केवल पूर्णांक भाग लें)

    • वैल:=हल करें (ए, बी, सी, मिड)

    • अगर वैल k के समान है, तो

      • उत्तर:=मध्य

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

    • अन्यथा जब वैल> के, तब

      • अंत:=मध्य - 1

    • अन्यथा,

      • प्रारंभ:=मध्य + 1

  • वापसी उत्तर

उदाहरण

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

from math import log2, floor
SMALLER_VAL = 1000000
LARGER_VAL = 1000000000000000
def solve(a, b, c, n) :
   ans = a * n
   lg_val = floor(log2(n))
   ans += b * n * lg_val
   ans += c * n**3
   return ans
def get_pos(a, b, c, k) :
   begin = 1
   end = SMALLER_VAL
   if (c == 0) :
      end = LARGER_VAL
   ans = 0
   while (begin <= end) :
      mid = (begin + end) // 2
      val = solve(a, b, c, mid)
      if (val == k) :
         ans = mid
         break
      elif (val > k) :
         end = mid - 1
      else :
         begin = mid + 1
   return ans
a = 2
b = 1
c = 1
k = 12168587437017
print(get_pos(a, b, c, k))

इनपुट

2,1,1,12168587437017

आउटपुट

23001

  1. 2D सरणी में k'th सबसे छोटा तत्व खोजने के लिए पायथन प्रोग्राम

    एक n×n उपयोगकर्ता इनपुट पूर्णांक मैट्रिक्स दिया गया है और k का मान दिया गया है। हमारा कार्य 2D सरणी में kth सबसे छोटे तत्व का पता लगाना है। यहाँ हम पाइथॉन में हेपैक मड्यूल.हीप क्यू (या हीपक) का उपयोग करते हैं। पायथन में, यह heapq मॉड्यूल का उपयोग करके उपलब्ध है। पायथन में इस मॉड्यूल की तकनीक यह है क

  1. एक सूची में अधिकतम और न्यूनतम तत्व की स्थिति खोजने के लिए पायथन कार्यक्रम?

    पायथन में अधिकतम, न्यूनतम तत्व और उनकी स्थिति का भी पता लगाना बहुत आसान है। पायथन विभिन्न इनबिल्ट फ़ंक्शन प्रदान करता है। न्यूनतम () का उपयोग किसी सरणी में न्यूनतम मान ज्ञात करने के लिए किया जाता है, अधिकतम () का उपयोग किसी सरणी में अधिकतम मान ज्ञात करने के लिए किया जाता है। अनुक्रमणिका () का उपयोग

  1. किसी आइटम की अनुक्रमणिका को पायथन में युक्त सूची में कैसे खोजें?

    सूची में किसी तत्व की स्थिति (उस मामले के लिए कोई अनुक्रम डेटा प्रकार) अनुक्रमणिका () विधि द्वारा प्राप्त की जाती है। यह विधि दिए गए तत्व की घटना का पहला उदाहरण ढूंढती है। >>> L1=[45, 32, 100, 10, 24, 56] >>> L1.index(24) 4