程序在python中计算总和为1的分数对的数量

假设我们有一个分数列表,其中每个分数都是代表数字(分子/分母)的单独列表[分子,分母]。我们必须找到总和为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:=新map

  • 回答:= 0

  • 对于分数中的每个分数i

    • ans:= ans + d [temp_x,temp_y]

    • x:= i [分子]

    • y:= i [分母]

    • g:=(x,y)的gcd

    • x:= x / g

    • y:= y / g

    • temp_x:= y-x

    • temp_y:= y

    • 如果(temp_x,temp_y)在d中,则

    • d [x,y]:= 1 +(d [(x,y)]可用,否则为0)

    • 返回ans

    让我们看下面的实现以更好地理解:

    范例程式码

    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
    猜你喜欢