问题描述
个人思路
- 去重:利用集合的不可重复性,去掉重复直线
- 找规律:
①每增加一条直线,平面 +1
②每与之前直线交一个点,平面 +1
代码如下
"""
Author:Lucky_bacon
Tool:Pycham、python3
"""
n = eval(input())
line = [tuple(map(int,input().split(" "))) for i in range(n)]
print(line)
se = set(line)#换成集合,自动将元组内的重复元素去除
line = list(se) #去重后的线
print(line)
if line:
ans=2#默认第一条可切割2个平面
#开始从第二条开始查找
for i in range(1,len(line)):
a1,b1=line[i]
pos=set()#设置集合模式
#搜索于之前直线是否存在交点
for j in range(i):
a2,b2=line[j]
if a1==a2:
continue
x=(b2-b1)/(a1-a2) #斜率
y=a1*x+b1
#存在交点存储起来
pos.add((x,y))
# print(pos)
#每次遍历于之前的直线所得到的交点的个数,进而统计可切割平面的个数
ans += len(pos)+1
print(ans)