ধরুন আমাদের অনন্য ধনাত্মক মান সহ একটি অ্যারে সংখ্যা আছে, আমাদের টিপলের সংখ্যা (a, b, c, d) খুঁজে বের করতে হবে যেমন a*b =c*d যেখানে a, b, c, এবং d হল সংখ্যার উপাদান , এবং সমস্ত উপাদান 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 হয়
- উত্তর:=0
- আমি 0 থেকে সংখ্যার আকার - 2 এর মধ্যে, কর
- j রেঞ্জ i+1 থেকে সংখ্যার আকারের জন্য, করুন
- dic[সংখ্যা[i]*সংখ্যা[j]] :=dic[সংখ্যা[i]*সংখ্যা[j]] + 1
dic-এর সমস্ত মানের তালিকায় প্রতিটি v-এর জন্য - j রেঞ্জ i+1 থেকে সংখ্যার আকারের জন্য, করুন
- করুন
- যদি v 1 এর মত হয়, তাহলে
- পরবর্তী পুনরাবৃত্তির জন্য যান
- v:=v-1
- s:=(v/2) * (8+8*v)
- উত্তর :=ans + s
- যদি v 1 এর মত হয়, তাহলে
- পূর্ণসংখ্যা হিসাবে উত্তর দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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]
আউটপুট
0