备战蓝桥杯|2021年第十二届蓝桥杯省赛Python组(真题+解析+代码)(直线)

1 真题备战蓝桥杯|2021年第十二届蓝桥杯省赛Python组(真题+解析+代码)(直线)
文章图片
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 points: x2,y2=j[0],j[1] if x1==x2:#特殊情况:直线垂直时斜率不存在,先跳过最后计算 continue k=(y2-y1)/(x2-x1)#斜率公式 b=(x2*y1-x1*y2)/(x2-x1)#截距公式 if (k,b) not in docker:#存入容器里没有的(斜率,截距)对 docker.add((k,b)) print(len(docker)+20)#输出结果:容器的长度40237+斜率不存在的20种情况=40257


【备战蓝桥杯|2021年第十二届蓝桥杯省赛Python组(真题+解析+代码)(直线)】我写的是关于蓝桥杯的系列题解,感谢关注我的朋友们,我会持续输出高质量文章

蓝桥杯python组十二届省赛真题+解析+代码(通俗易懂版)_编程有了思路-CSDN博客_蓝桥杯大赛python小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。小蓝想知道自己能从 1 拼到多少。例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1拼到多少?https://blog.csdn.net/m0_55148406/article/details/122774029

    推荐阅读