解题思路:拿着笔画着画着,发现每增加一个交点,就会增加n+1个平面 。因此我们可以遍历所以直线 ,将已经遍历过的直线储存在lines列表中,然后求当前直线                    与 lines中已遍历直线的交点,最后用set集合实现对交点的去重。

注意事项:set()是不可以直接对二维列表进行去重。例子:

                   set([[1,2],[1,2]])会报错

                    转化为set([(1,2),(1,2)])是正确的,即将列表的中的元素转化为tuple形式。

参考代码:


n = int(input())

lines = []

ans = 1

for i in range(n):

    point = []

    a,b = map(int,input().split())

    if (a,b) in lines:

        continue

    for k,h in lines:

        if a!=k:     

            x = (h-b)/(a-k)        #求交点

            y = (a*h-k*b)/(a-k)

            point.append((x,y))

    lines.append((a,b))

    s = len(set(point))  #将列表转化为tuple,可以实现对多维数组去重

    ans += (s+1)


print(ans)


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论