Loading... ## 题目  ## 思路 根据直线方程y=kx+b求出对应的k和b,确保不会有重复的直线,利用set()去重。 求k和b的公式 ``` k=(y1-y0)/(x1-x0) b=(x0*y1-x1*y0)/(x0-x1) ``` 由于竖直的直线不存在斜率k,所以要在最终答案上另外加上竖线的条数 ## 题解 ```Python points = [(x, y) for x in range(20) for y in range(21)] line = set() for i in points: for j in points: if i != j and i[0] != j[0]: k = (j[1]-i[1])/(j[0]-i[0]) b = (i[0]*j[1]-i[1]*j[0])/(i[0]-j[0]) line.add((k,b)) print(len(line) + 20) ``` 结果 ``` 40257 ``` Last modification:March 12, 2022 © Allow specification reprint Support Appreciate the author WeChat Like 0 如果觉得我的文章对你有用,请随意赞赏