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

पायथन में संख्या के वर्ग के दो संख्याओं के गुणनफल के बराबर होने के तरीकों की संख्या खोजने का प्रोग्राम


मान लीजिए हमारे पास दो सरणियाँ nums1 और nums2 हैं, हमें ट्रिपलेट्स (प्रकार 1 और प्रकार 2) खोजने हैं जो इन दो नियमों का पालन करते हैं:

  • ट्रिपलेट (i, j, k) यदि nums1[i]² = nums2[j] * nums2[k] जहाँ [0 ≤ i < nums1 का आकार और 0 ≤ j < k < nums2 का आकार]
  • ट्रिपलेट (i, j, k) यदि nums2[i]² = nums1[j] * nums1[k] जहाँ [0 ≤ i < nums2 का आकार और 0 ≤ j < k < nums1 का आकार]

उदाहरण के लिए, यदि इनपुट है nums1 = [7,4] और nums2 = [5,2,8,9], तो आउटपुट 1 होगा क्योंकि प्रकार 1 का एक ट्रिपलेट (1,1,2) है: nums1[1]² = nums2[1] * nums2[2] = (16 = 2*8)।

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • cnt1 := nums1 के प्रत्येक तत्व और उसकी गिनती को रखने के लिए एक मैप
  • cnt2 := nums2 के प्रत्येक तत्व और उसकी गिनती को रखने के लिए एक मैप
  • एक फ़ंक्शन triplets() परिभाषित करें जो arr1, arr2 लेता है
  • ans := 0
  • arr1 के प्रत्येक (t, v) जोड़े के लिए:
    • k := arr2[t] यदि मौजूद है, अन्यथा 0
    • tmp := k*(k-1)/2
    • sq := t * t
    • arr2 के प्रत्येक m के लिए:
      • यदि m < t और sq % m == 0, तो
        • tmp := tmp + arr2[m] * arr2[sq//m] (यदि मौजूद हैं)
    • ans := ans + tmp * v
  • ans लौटाएं
  • मुख्य विधि से: triplets(cnt1, cnt2) + triplets(cnt2, cnt1) लौटाएं

उदाहरण

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

from collections import Counter
def solve(nums1, nums2):
    cnt1 = Counter(nums1)
    cnt2 = Counter(nums2)
    def triplets(arr1, arr2):
        ans = 0
        for t, v in arr1.items():
            k = arr2.get(t, 0)
            tmp = k * (k - 1) // 2
            sq = t * t
            for m in arr2:
                if m < t and sq % m == 0:
                    tmp += arr2.get(m, 0) * arr2.get(sq // m, 0)
            ans += tmp * v
        return ans
    return triplets(cnt1, cnt2) + triplets(cnt2, cnt1)

nums1 = [7,4]
nums2 = [5,2,8,9]
print(solve(nums1, nums2))

इनपुट

[7,4],[5,2,8,9]

आउटपुट

2
  1. - पायथन में n तक जोड़ने के लिए न्यूनतम फाइबोनैचि संख्याओं की संख्या ढूंढने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या n है; हमें n तक जोड़ने के लिए आवश्यक न्यूनतम फाइबोनैचि संख्याओं की संख्या ढूंढनी है। उदाहरण के लिए, यदि इनपुट n = 20 है, तो आउटपुट 3 होगा, क्योंकि हम फाइबोनैचि संख्याओं [2, 5, 13] का उपयोग करके 20 तक जोड़ सकते हैं। इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे res

  1. - Python में दिए गए योग वाले कुछ संख्याओं का गुणनफल खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या n है, हमें दो या अधिक संख्याएं ढूंढनी हैं जैसे कि उनका योग n के बराबर हो, और इन संख्याओं का गुणनफल अधिकतम हो, हमें गुणनफल ढूंढना है। तो, यदि इनपुट n = 12 जैसा है, तो आउटपुट 81 होगा, क्योंकि 3 + 3 + 3 + 3 = 12 और 3 * 3 * 3 * 3 = 81। इसे हल करने के लिए, हम इन चरणों का

  1. - पायथन में संदेश को डिकोड करने के तरीकों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास a = 1, b = 2, ... z = 26 जैसा मैपिंग है, और हमारे पास एक एन्कोडेड संदेश message स्ट्रिंग है, हमें उन तरीकों की संख्या गिननी है जिनसे इसे डिकोड किया जा सकता है। उदाहरण के लिए, यदि इनपुट message = 222 है, तो आउटपुट 3 होगा, क्योंकि इसे 3 तरीकों से डिकोड किया जा सकता है: bbb, bv, और