Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm bộ giá trị có cùng sản phẩm bằng Python

Giả sử chúng ta có một dãy num với các giá trị dương duy nhất, chúng ta phải tìm số bộ giá trị (a, b, c, d) sao cho a * b =c * d trong đó a, b, c và d là các phần tử của nums và tất cả các phần tử a, b, c và d đều khác biệt.

Vì vậy, nếu đầu vào là nums =[2,3,4,6], thì đầu ra sẽ là 8 vì chúng ta có thể nhận được các bộ giá trị như (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).

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • dic:=một bản đồ trống, giá trị mặc định là 0 nếu không có khóa nào đó
  • ans:=0
  • đối với tôi trong phạm vi từ 0 đến kích thước là nums - 2, thực hiện
    • đối với j trong phạm vi i + 1 đến kích thước là num, thực hiện
      • dic [nums [i] * nums [j]]:=dic [nums [i] * nums [j]] + 1
  • đối với mỗi v trong danh sách tất cả các giá trị của dic, hãy thực hiện
    • nếu v giống 1, thì
      • chuyển sang lần lặp tiếp theo
    • v:=v-1
    • s:=(v / 2) * (8 + 8 * v)
    • ans:=ans + s
  • trả về ans dưới dạng số nguyên

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

[3,4,6,2]

Đầu ra

0