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

โปรแกรมนับจำนวนคู่เศษส่วนที่มีผลรวมเป็น 1 ใน python


สมมติว่าเรามีรายการเศษส่วนโดยที่เศษส่วนแต่ละส่วนเป็นรายการแต่ละรายการ [ตัวเศษ ตัวส่วน] ซึ่งแทนตัวเลข (ตัวเศษ / ตัวส่วน) เราต้องหาจำนวนคู่ของเศษส่วนที่มีผลรวมเป็น 1

ดังนั้น ถ้าอินพุตเป็นเหมือนเศษส่วน =[[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]] แล้วผลลัพธ์ จะเป็น 4 เช่น (2/7 + 5/7), (3/12 + 3/4), (3/4 + 1/4), (4/14 + 5/7) เป็นสี่คู่ที่รวม ถึง 1.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

  • d :=แผนที่ใหม่
  • ตอบ :=0
  • สำหรับแต่ละเศษส่วน i ในเศษส่วน ทำ
    • x :=i[ตัวเศษ]
    • y :=i[ตัวส่วน]
    • g :=gcd ของ (x, y)
    • x :=x / g
    • y :=y / g
    • temp_x :=y - x
    • temp_y :=y
    • ถ้า (temp_x, temp_y) อยู่ใน d แล้ว
      • ans :=ans + d[temp_x, temp_y]
    • d[x, y] :=1 + (d[(x, y)] เมื่อพร้อมใช้งาน มิฉะนั้น 0)
  • คืนสินค้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:

โค้ดตัวอย่าง

class Solution:
   def solve(self, fractions):
   import math

   d = {}
   ans = 0
   for i in fractions:
      x = i[0]
      y = i[1]
      g = math.gcd(x, y)
      x /= g
      y /= g
      temp_x = y - x
      temp_y = y
      if (temp_x, temp_y) in d:
         ans += d[(temp_x, temp_y)]
         d[(x, y)] = d.get((x, y), 0) + 1
      return ans

ob = Solution()
fractions = [[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]]
print(ob.solve(fractions))

อินพุต

[[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]]

ผลลัพธ์

4