用 Python 编写程序查找具有相同乘积的元组

pythonserver side programmingprogramming更新于 2025/12/7 17:16:17

假设我们有一个具有唯一正值的数组 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:= 0
  • 对于 i,范围从 0 到 nums 的大小 - 2,执行
    • 对于 j,范围从 i+1 到 nums 的大小,执行
      • dic[nums[i]*nums[j]] := dic[nums[i]*nums[j]] + 1
  • 对于 dic 所有值列表中的每个 v,执行
    • 如果 v 与 1 相同,则
      • 进行下一次迭代
    • v:= v-1
    • s:= (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]

输出

0

相关文章


有用资源