मान लीजिए हमारे पास अद्वितीय पॉजिटिव मानों वाला एक ऐरे nums है, हमें टुपल (a, b, c, d) की संख्या ढूंढनी है जैसे कि a*b = c*d जहां a, b, c, d nums के एलिमेंट हैं, और सभी एलिमेंट a, b, c, d विशिष्ट हैं।
उदाहरण के लिए, यदि इनपुट 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 :=एक खाली मैप, डिफ़ॉल्ट मान 0 यदि कोई कुंजी मौजूद नहीं हैans := 0iको 0 सेlen(nums) - 2तक लूप चलाएं:jकोi+1सेlen(nums)तक लूप चलाएं:dic[nums[i]*nums[j]] := dic[nums[i]*nums[j]] + 1
dicके सभी मानों की सूची में प्रत्येकvके लिए:- यदि
v == 1, तो अगले इटरेशन पर जाएं v := v - 1s := (v/2) * (8 + 8*v)ans := ans + s
- यदि
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