平面切分 python 蓝桥杯

题目描述

平面上有 NN 条直线,其中第 ii 条直线是 y = A_i \times x + B_iy=Ai×x+Bi

请计算这些直线将平面分成了几个部分。

输入描述

第一行包含一个整数 NN

以下 NN 行,每行包含两个整数 A_i, B_iAi,Bi

其中,1 \leq N \leq 1000, −10^5 \leq A_i,B_i \leq 10^51≤N≤1000,−105≤Ai,Bi≤105。

输出描述

一个整数代表答案。

输入输出样例

示例

输入
3
1 1
2 2
3 3
输出
6

运行限制

  • 最大运行时间:1s

  • 最大运行内存: 256M

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)

你可能感兴趣的:(蓝桥杯刷题,python)