蓝桥杯 省赛 平面切分(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)



京公网安备 11010502036488号