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

पायथन में ए, बी, सी द्वारा विभाज्य अनुक्रम के nth टर्म को खोजने का कार्यक्रम

मान लीजिए हमारे पास चार नंबर n, a, b और c हैं। हमें a, b या c से विभाज्य संख्याओं के क्रमबद्ध क्रम का nवां (0 अनुक्रमित) पद ज्ञात करना है।

इसलिए, यदि इनपुट n =8 a =3 b =7 c =9 जैसा है, तो आउटपुट 18 होगा, क्योंकि अनुक्रम के पहले 9 पद हैं [1, 3, 6, 7, 9, 12, 14 , 15, 18].

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

  • यदि न्यूनतम a, b, c 1 के समान है, तो
    • वापसी n
  • ab :=lcm(a, b), bc :=lcm(b, c), ca :=lcm(a, c)
  • abc :=lcm(ab, c)
  • बाएं:=1, दाएं:=10^9
  • बाएं <=दाएं, करें
    • मध्य :=(बाएं + दाएं) / 2
    • na :=मध्य / a का भागफल
    • nb :=मध्य / b का भागफल
    • nc :=मध्य / c का भागफल
    • nab :=मध्य / ab का भागफल
    • nbc :=मध्य / ईसा पूर्व का भागफल
    • nca :=मध्य / ca का भागफल
    • nabc :=मध्य / abc का भागफल
    • अंक:=ना + एनबी + एनसी - एनएबी - एनबीसी - एनसीए + एनएबीसी
    • यदि अंक> n, तो
      • दाएं:=मध्य -1
    • अन्यथा जब अंक
    • बाएं:=मध्य + 1
  • अन्यथा,
    • मध्य-न्यूनतम (मध्य मोड ए, मिड मॉड बी, मिड मॉड सी) पर लौटें
  • वापसी -1
  • उदाहरण (पायथन)

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

    import math
    def lcm(a, b):
       return (a * b) // math.gcd(a, b)
    class Solution:
       def solve(self, n, a, b, c):
          if min(a, b, c) == 1:
             return n
          ab, bc, ca = lcm(a, b), lcm(b, c), lcm(a, c)
          abc = lcm(ab, c)
          left, right = 1, 10 ** 9
          while left <= right:
             mid = (left + right) // 2
             na = mid // a
             nb = mid // b
             nc = mid // c
             nab = mid // ab
             nbc = mid // bc
             nca = mid // ca
             nabc = mid // abc
             numterms = na + nb + nc - nab - nbc - nca + nabc
             if numterms > n:
                right = mid - 1
             elif numterms < n:
                left = mid + 1
             else:
                return mid - min(mid % a, mid % b, mid % c)
          return -1
    ob = Solution()
    n = 8
    a = 3
    b = 7
    c = 9
    print(ob.solve(n, a, b, c))

    इनपुट

    8, 3, 7, 9

    आउटपुट

    18

    1. पायथन में एनटी फाइबोनैचि संख्या खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक संख्या n है, हमें nवां फाइबोनैचि पद ज्ञात करना है। जैसा कि हम जानते हैं कि फिबोनाची शब्द f(i) =f(i-1) + f(i-2), पहले दो पद 0, 1. हैं। तो, अगर इनपुट 15 की तरह है, तो आउटपुट 610 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - पहला:=0, दूसरा:=1 2 से n की श्रेणी में i

    1. पायथन में दिए गए स्ट्रिंग अनुक्रम नियमों का पालन करने के बाद nth अनुक्रम खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास दो तार s, t हैं और एक अन्य धनात्मक संख्या n भी दी गई है, हमें अनुक्रम A का nवाँ पद ज्ञात करना है जहाँ - ए[0] =एस ए[1] =टी A[n] =A[n - 1] + A[n - 2] जब n सम हो, अन्यथा A[n] =A[n - 2] + A[n - 1]। उदाहरण के तौर पर, यदि s =a और t =b, तो अनुक्रम A होगा - [a, b, ba (a + b), bba (

    1. पायथन में दिए गए पुनरावर्तन संबंध का nवाँ पद ज्ञात कीजिए

      मान लीजिए कि हमारे पास bn नामक संख्याओं का एक क्रम है, इसे b1=1 और bn+1/bn=2n जैसे पुनरावर्ती संबंध का उपयोग करके दर्शाया जाता है। हमें दिए गए n के लिए log2(bn) का मान ज्ञात करना है। इसलिए, यदि इनपुट 6 जैसा है, तो आउटपुट 5 होगा क्योंकि log2(bn) =(n * (n - 1)) / 2 =(6*(6-1))/2 =15 इस संबंध को हल कर