1 真题
2 解析
难度系数:⭐⭐
考察题型:枚举 数论
涉及知识点: 集合docker=set() 斜率截距公式(k,b)
思路分析:
一条普普通通的直线,竟然能变出这么多花样?直线,接招!( •̀ ω •́ )✧
首先创建二维列表存放坐标系,然后二重循环遍历,给每个坐标点赋初值。
因为要统计不同的直线,所以用直线的性质:斜率和截距 来区分,并存放到集合容器里,
最后一点小细节,当斜率不存在时,k会报错,
所以单独计算,最后直接加上20条垂直x轴的直线。
3 代码
#直线
points=[[x,y] for x in range(20) for y in range(21)] #创建二维列表:代表xy坐标系
docker=set() #创建集合属性的容器:因为集合里的元素不会重复
for i in points: #二重循环遍历每个坐标
x1,y1=i[0],i[1] #注意书写格式:a,b=c,d
for j in