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

পাইথনে একই প্রোডাক্ট वाली টাপল খুঁজে বের করার প্রোগ্রাম


আমাদের একটি অ্যারে nums আছে যাতে ইউনিক পজিটিভ মান রয়েছে। আমাদের টাপল (a, b, c, d) এর সংখ্যা বের করতে হবে যাতে a*b = c*d যেখানে a, b, c, d হলো nums-এর উপাদান, এবং a, b, c, d সবগুলো ডISTINCT।

উদাহরণস্বরূপ, ইনপুট nums = [2,3,4,6] হলে আউটপুট হবে 8 কারণ আমরা টাপল পেতে পারি: (2,6,3,4), (2,6,4,3), (6,2,3,4), (6,2,4,3), (3,4,2,6), (4,3,2,6), (3,4,6,2), (4,3,6,2)।

সমাধানের ধাপসমূহ

  • dic := একটি খালি ম্যাপ, ডিফল্ট ভ্যালু ০

  • ans := 0

  • i = 0 থেকে nums-এর আকার - 2 পর্যন্ত লুপ চালান:

    • j = i+1 থেকে nums-এর আকার পর্যন্ত লুপ চালান:

      • dic[nums[i]*nums[j]] += 1

  • dic-এর প্রতিটি ভ্যালু v এর জন্য:

    • যদি v == 1 হয়, তবে পরবর্তীতে যান

    • v := v - 1

    • s := (v/2) * (8 + 8*v)

    • ans += s

  • int(ans) রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালোভাবে বুঝার জন্য:

from collections import defaultdict
def solve(nums):
    dic = defaultdict(int)
    ans = 0
    for i in range(len(nums)-1):
        for j in range(i+1, len(nums)):
            dic[nums[i]*nums[j]] += 1
    for v in dic.values():
        if v == 1:
            continue
        v = v - 1
        s = (v/2) * (8 + 8*v)
        ans += s
    return int(ans)

nums = [3,4,6,2]
print(solve(nums))

ইনপুট

[3,4,6,2]

আউটপুট

8
  1. Python দিয়ে একই লেবেল ওয়ালা সাব-ট্রি নোড সংখ্যা বের করার প্রোগ্রাম

  2. টাপলের সাইজ (মেমোরি) বের করার পাইথন প্রোগ্রাম

  3. পাইথনে একই সেট বিট সংখ্যায় পরের বড় সংখ্যা বের করার প্রোগ্রাম

  4. পাইথনে সংলগ্ন সাবঅ্যারের সর্বোচ্চ গুণফল খুঁজে বের করার প্রোগ্রাম