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