程序在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