Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 첫 번째 쌍과 마지막 쌍의 곱이 같은 쿼드러플의 수를 찾는 프로그램

<시간/>

고유한 양수 nums가 있는 nums라는 숫자 목록이 있다고 가정합니다. a*b =c*d, a, b, c 및 d가 모두 nums의 고유한 요소가 되도록 nums에서 (a, b, c, d)와 같은 4배의 수를 찾아야 합니다.

따라서 입력이 nums =[3, 6, 4, 8]과 같으면 4배는 [[3,8,6,4], [3,8,4,6]이기 때문에 출력은 8이 됩니다. , [8,3,6,4], [8,3,4,6], [6,4,3,8], [4,6,3,8], [6,4,8,3] , [4,6,8,3]].

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • c :=새 지도
  • n :=숫자 크기
  • 0 ~ n - 1 범위의 i에 대해
    • i + 1 ~ n - 1 범위의 j에 대해
      • x :=숫자[i] * 숫자[j]
      • c[x] :=1 + (사용 가능한 경우 c[x], 그렇지 않은 경우 0)
  • ret :=0
  • c의 모든 값 목록에 있는 각 x에 대해 다음을 수행합니다.
    • ret :=ret + x *(x - 1)
  • ret * 4를 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(nums):
   c = {}
   n = len(nums)
   for i in range(n):
      for j in range(i + 1, n):
         x = nums[i] * nums[j]
         c[x] = c.get(x, 0) + 1
   ret = 0
   for x in c.values():
      ret += x * (x - 1)
   return ret * 4

nums = [3, 6, 4, 8]
print(solve(nums))

입력

[3, 6, 4, 8]

출력

8