今天是2020年省赛的最后一题,大家加油啊!~
每天刷一道题,话不多说,先刷近两年的题吧,从2020的开始,如果有一起的可以加入我们!!!
一起来刷题,冲击国赛!!!
扫码 我的主页 网页左边 群二维码。
加入方式:可以在下方的微信名片加我,然后拉你入群。(记得备注暗号:我要拿国奖)
2020年第十一届蓝桥杯赛题总览
2020年的题就是这些,类型分为两种,分别是结果填空和程序设计,我们每天刷一道题,省赛没问题!
平面切分(题目)
(本题总分:25分)
官方练习系统:https://www.lanqiao.cn/problems/505/learning/
—>【问题描述】
平面上有N条直线,其中第 i i i条直线是 y = A i × x + B i y=A_i×x+B_i y=Ai×x+Bi。
请计算这些直线将平面分成了几个部分。
—>【输入描述】
第一行包含一个整数 N N N。
以下 N N N行,每行包含两个整数 A i , B i A_i,B_i Ai,Bi。
其中, 1 ≤ N ≤ 1000 , − 1 0 5 ≤ A i , B i ≤ 1 0 5 1\le N\le 1000,-10^5\le A_i,B_i\le10^5 1≤N≤1000,−105≤Ai,Bi≤105。
—>【输出描述】
输出一个整数,表示答案。
—>【输入输出样例】
解析
通过阅读题干,本题——难度中上:⭐⭐⭐⭐
考察类型:计算几何、思维
考察知识点:map(),max()
分析:
代码
Python代码实现:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/3/4 15:19
# @Author : 府学路18号车神
# @Email :yurz_control@163.com
# @File : Day10.py
n = int(input("输入平面上直线的条数:"))
# 首先去除重叠的直线
lines = set(tuple(map(int, input("输入每条直线的A和B的值:").split())) for i in range(n))
n = len(lines)
new_lines = list(lines)
# 规则
def get_area(n, lines):
p = 2 # 设置判断条件,一条直线有两个平面
if n == 1: # 出口
return p
for x in range(1, n):
point = set()
for y in range(x):
# 当直线的斜率不同的时候才会出现交叉的时候(在本题中的A就是斜率K),由此我们计算不重复交点数
if lines[x][0] != lines[y][0]:
i = (lines[x][1]-lines[y][1])/(lines[y][0]-lines[x][0]) # 判断两直线是否存在交点
j = (lines[x][0]*lines[y][1]-lines[x][1]*lines[y][0])/(lines[x][0]-lines[y][0])
point.add((i, j))
p += len(point)+1 # 添加计算的不重复交点数
return p
print(get_area(n, new_lines))
今天最后一题,稍有难度,加油!
由此,我们可以快速得出结果,验证完毕!
今天开刷第 十 天,难度中上,欢迎大家加入,一起变强,一起自律,一起上国赛!!!
今天的题目有点难哈,有不同解法的可以在下面留言哦!~
往期刷题路线:
刷题路线 | Detail |
---|---|
Day-01 | 门牌制作 |
Day-02 | 寻找2020 |
Day-03 | 跑步锻炼 |
Day-04 | 蛇形填数 |
Day-05 | 排序 |
Day-06 | 装饰珠 |
Day-07 | 成绩统计 |
Day-08 | 单词分析 |
Day-09 | 数字三角形 |
官方刷题练习系统:http://lx.lanqiao.cn/
ღ( ´・ᴗ・` )
❤