在Python中计算分数对的数量,它们的总和为1

在Python中计算分数对的数量,它们的总和为1

假设我们有一个分数列表,其中每个分数都是独立的列表[numerator,denominator],表示数字(numerator / denominator)。我们必须找出总和为1的分数对的数量。

因此,如果输入为fractions = [[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:一个新图
  • ans:0
  • 对于fractions中的每个分数i,请执行以下操作:
    • x:i [分子]
    • y:i [分母]
    • g:(x,y)的gcd
    • x:x / g
    • y:y / g
    • temp_x:y-x
    • temp_y:y
    • 如果(d中的temp_x,temp_y)存在,则
      • 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程