题目描述
平面上有 N条直线,其中第 i 条直线是y=Ai×x+Bi。
请计算这些直线将平面分成了几个部分。
输入描述
第一行包含一个整数 N。
以下 N 行,每行包含两个整数 Ai,Bi。
其中,1≤N≤1000,−10^5≤Ai,Bi≤10^5。
输出描述
一个整数代表答案。
输入输出样例
示例
输入
3 1 1 2 2 3 3
输出
6
总结:
1.那么一条直线对答案的贡献 =1+ 它与别的直线的交点个数 。
from math import *
n = int(input())
line = set()
ans = 1
#求交点
def calc(a , b):
node=set()
for j in line:
A = j[0]
B = j[1]
if A == a:
continue
x = (B - b) / (a - A)
y = x * a + b
node.add((round(x,6),round(y,6)));
return len(node) + 1
#不断地在平面上画直线
for i in range(n):
a, b = map(int, input().split())
if (a, b) in line:
continue
ans += calc(a , b)
line.add((a, b))
print(ans)