在Python中找到具有相同乘积的元组的程序

在Python中找到具有相同乘积的元组的程序

假设我们有一个唯一正值的数组nums,我们必须找到元素为nums的a、b、c、d的元组(a,b,c,d),使得ab = cd,其中所有元素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+8v)
    • 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程