কম্পিউটার টিউটোরিয়াল

পাইথনে সংখ্যার বর্গ দুই সংখ্যার গুণফলের সমান হলে ট্রিপলেট গণনা করার প্রোগ্রাম

দুটি অ্যারে nums1 এবং nums2 দেওয়া থাকলে, আমাদের দুটি ধরনের ট্রিপলেট খুঁজে বের করতে হবে:

ট্রিপলেটের ধরন:

  • প্রकार ১: ট্রিপলেট (i, j, k) যেখানে nums1[i]² = nums2[j] * nums2[k] এবং 0 ≤ i < nums1.length, 0 ≤ j < k < nums2.length
  • প্রकार ২: ট্রিপলেট (i, j, k) যেখানে nums2[i]² = nums1[j] * nums1[k] এবং 0 ≤ i < nums2.length, 0 ≤ j < k < nums1.length

উদাহরণ:

ইনপুট: nums1 = [7,4], nums2 = [5,2,8,9]

আউটপুট: 1 কারণ টাইপ ১ ট্রিপলেট (1,1,2) আছে: nums1[1]² = 16 = nums2[1] * nums2[2] = 2*8

সমাধানের পদ্ধতি:

  1. প্রতিটি অ্যারের উপাদান এবং তাদের ফ্রিকোয়েন্সি সংরক্ষণ করার জন্য দুটি ম্যাপ (Counter) তৈরি করুন: cnt1 এবং cnt2
  2. একটি হেল্পার ফাংশন triplets(arr1, arr2) ডিফাইন করুন যা:
    • ans = 0 আরম্ভ করুন
    • arr1-এর প্রতিটি উপাদান t এবং তার কাউন্ট v জন্য:
      • k = arr2.get(t, 0) (যদি t arr2-এ থাকে)
      • tmp = k*(k-1)/2 (একই মানদ্বয় থেকে জোড়া বানানোর সংখ্যা)
      • sq = t*t
      • arr2-এর প্রতিটি m জন্য যদি m < t এবং sq % m == 0 হয়, তবে tmp += arr2.get(m,0) * arr2.get(sq//m, 0)
    • ans += tmp * v
    • ans রিটার্ন করুন
  3. ফাইনাল আউটপুট: 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))  # আউটপুট: 2

টেস্ট কেস:

ইনপুট: [7,4],[5,2,8,9]

আউটপুট: 2

  1. পাইথনে দুটি নম্বরের জোড়ার যোগফলের পার্থক্য ন্যূনতম করা প্রোগ্রাম

  2. পাইথনে n কে ফিবোনাচ্চি সংখ্যা গুলোর যোগফলে প্রকাশ করার ন্যূনতম সংখ্যা বের করা

  3. পাইথনে দিয়ে যোগফলের জন্য সর্বোচ্চ গুণফল নির্ণয়

  4. পাইথনে এনকোডেড মেসেজ ডিকোড করার উপায়ের সংখ্যা খুঁজে বের করার প্রোগ্রাম