n = eval(input())
line = [tuple(map(int,input().split(" "))) for i in range(n)]
se = set(line)
line = list(se) #去重后的线
if line:
ans=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=(b1-b2)/(a1-a2) #从这里开始,它到底是怎么计算的,看不太懂
y=a1*x+b1
pos.add((x,y))
ans += len(pos)+1
print(ans)
这个呢 使用了霍夫变换,就是将原始的坐标系进行变换,你可以搜搜看,霍夫变换检测直线
在这个地方呢,可以理解为,在原始坐标系,a1、b1是变量,而另一个坐标系x和y是变量,原始坐标系的直线在转换坐标系后,会被映射成一个点(使用x和y表示)