蓝桥杯 省赛 平面切分(python)
蓝桥杯 省赛 平面切分(python)
思路
平面里的一条线可以把平面分成两个部分,两条线可以分成三个或四个部分,往下寻找规律。
每增加一条线,增加的平面数量等于新增线与原本所有线的交点的个数加1。
代码
n = eval(input()) l = [] for i in range(n): l.append(list(map(int, input().split()))) ''' A1 * X + B1 = A2 * X + B2 (A1 - A2)*X = B2 - B1 X = (B2 - B1)/(A1 - A2) Y = A1*X + B1 ''' res = 2 # 第一条线把平面分为两个部分 node = [] for i in range(1, n): for j in range(i): if l[i][0] != l[j][0]: x = (l[i][1] - l[j][1]) / (l[j][0] - l[i][0]) # 交点的x y = l[j][0] * x + l[j][1] # 交点的y if [x, y] in node: pass else: node.append([x, y]) # 交点添加到列表里,如果有重复就不添加 res += len(node) + 1 node = [] # 清空列表,准备增加下一条线。 print(res)