আমাদের একটি অ্যারে 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 := 0i= 0 থেকেnums-এর আকার - 2 পর্যন্ত লুপ চালান:j=i+1থেকেnums-এর আকার পর্যন্ত লুপ চালান:dic[nums[i]*nums[j]] += 1
dic-এর প্রতিটি ভ্যালুvএর জন্য:যদি
v == 1হয়, তবে পরবর্তীতে যানv := v - 1s := (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