Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหา tuple ด้วยผลิตภัณฑ์เดียวกันใน Python


สมมติว่าเรามีจำนวนอาร์เรย์ที่มีค่าบวกเฉพาะ เราต้องหาจำนวน tuples (a, b, c, d) ที่ a*b =c*d โดยที่ a, b, c และ d เป็นองค์ประกอบของ nums และองค์ประกอบทั้งหมด a, b, c และ d ต่างกัน

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[2,3,4,6] ผลลัพธ์จะเป็น 8 เพราะเราสามารถรับ tuples ได้เช่น (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 ถึงขนาดของ nums - 2 ทำ
    • สำหรับ j ในช่วง i+1 ถึงขนาดของ nums ทำ
      • dic[nums[i]*nums[j]] :=dic[nums[i]*nums[j]] + 1
  • สำหรับแต่ละ v ในรายการค่าทั้งหมดของ dic ทำ
    • ถ้า 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