蓝桥杯 省赛 平面切分(python)

蓝桥杯 省赛 平面切分(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)
全部评论
点赞 回复 分享
发布于 02-04 13:12 江苏

相关推荐

那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
喜欢飞来飞去的雪碧在刷代码:可以试一试字节
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务