试题A:门牌制作

本题总分:5分

【问题描述】
  小蓝要为一条街的住户制作门牌号。
  这条街一共有2020位住户,门牌号从1到2020编号。
  小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字
符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个
字符0,2个字符1,1个字符7。
  请问要制作所有的1到2020号门牌,总共需要多少个字符2?

【答案提交】
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【答案】
624

【代码】

n = 0
for i in range(1, 2021):n += str(i).count('2')
print(n)

试题B:寻找2020

本题总分:5分

【问题描述】
  小蓝有一个数字矩阵,里面只包含数字0和2。小蓝很喜欢2020,他想找
到这个数字矩阵中有多少个2020。
  小蓝只关注三种构成2020的方式:
· 同一行里面连续四个字符从左到右构成2020
· 同一列里面连续四个字符从上到下构成2020
· 在一条从左上到右下的斜线上连续四个字符,从左上到右下构成2020.
  例如,对于下面的矩阵:
  220000
  000000
  000000
  000022
  002020
  共有5个2020。其中1个是在同一行里的,1个是在同一列里的,3个
是斜线上的。
  小蓝的矩阵比上面的矩阵要大,由于太大了,他只好将这个矩阵放在了
个文件里面,在试题目录下有一个文件2020.txt,里面给出了小蓝的矩阵。
  请帮助小蓝确定在他的矩阵中有多少个2020。

【答案提交】
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【答案】
不知道,没有2020.txt文件

【代码】

lines = []
with open('2020.txt', 'r') as f:for line in f.readlines():line = line.strip('\n')lines.append(line)result = 0for i in range(len(lines)):for j in range(len(lines[i])-3):if lines[i][j] == '2' and lines[i][j+1] == '0' and lines[i][j+2] == '2' and lines[i][j+1] == '0':result += 1for i in range(len(lines)-3):for j in range(len(lines[i])):if lines[i][j] == '2' and lines[i+1][j] == '0' and lines[i+2][j] == '2' and lines[i+3][j] == '0':result += 1for i in range(len(lines)-3):for j in range(len(lines[i])-3):if lines[i][j] == '2' and lines[i+1][j+1] == '0' and lines[i+2][j+2] == '2' and lines[i+3][j+3] == '0':result += 1print(result)

试题C:跑步锻炼

本题总分:10分

【问题描述】
  小蓝每天都锻炼身体。
  正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了
激励自己,小蓝要跑2千米。如果同时是周一或月初,小蓝也是跑2千米。
  小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年
10月1日周四(含)。请问这段时间小蓝总共跑步多少千米?

【答案提交】
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【答案】
8879

【代码】(从 Pure_white 博主那学到了datetime库,第十二届python组的大题就用上了,Python3的基础模块一(datetime))

from datetime import *start = date(2000,1,1)
end = date(2020,10,2) #注意这里要写成10月2,具体为什么看date函数说明
tmp = timedelta(days = 1)
result = 0while start != end:if start.weekday() == 0 or start.day == 1:result += 2else:result += 1start += tmpprint(result)

试题D:蛇形填数

本题总分:10分

【问题描述】
  如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。

  容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列
的数是多少?

【答案提交】
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【答案】
761

【思路】
  忘记拍照了,草稿纸还被我扔了。。。
  记得就是写了大概5、6个蛇形出来,发现从 1 → 5 → 13 → 25,每次会加 4、8、12,即 3 * n,然后算要加到第20行第20列要加多少次,就算出来了,不放心的话也可以再多写几个蛇形。

试题E:排序

本题总分:15分

【问题描述】
  小蓝最近学习了一些排序算法,其中冒泡排序让他印象深刻。
  在冒泡排序中,每次只能交换相邻的两个元素。
  小蓝发现,如果对一个字符串中的字符排序,只允许交换相邻的两个字符,
则在所有可能的排序方案中,冒泡排序的总交换次数是最少的。
  例如,对于字符串lan排序,只需要1次交换。对于字符串qiao。排序
总共需要4次交换。
  小蓝找到了很多字符串试图排序,他恰巧碰到一个字符串,需要100次交
换,可是他忘了把这个字符串记下来,现在找不到了。
  请帮助小蓝找一个只包含小写英文字母且没有字母重复出现的字符串,对
该串的字符排序,正好需要100次交换。如果可能找到多个,请告诉小蓝最短
的那个。如果最短的仍然有多个,请告诉小蓝字典序最小的那个

【答案提交】
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个只包含小写英文字母的字符串,在提交答案时只填写这个字符串,填写多余
的内容将无法得分。

【答案】(从 「Pure_white」博主那学的)
jonmlkihgfedcba

【思路】
  长度为 n 的降序数组的冒泡排序交换次数是 (n-1) * n / 2 次。
  大于等于100的第一个数是 105 = (15-1) * 15 / 2,所以最短的长度肯定是15了,再考虑到字典序最小,则答案应该就是onmlkjihgfedcba排列而成的,字典序最小,就需要第一个字母的字典序尽可能小,然后才是第二个、第三个……,那么就把正数第六个字母提到前面,结果应该就是jonmlkihgfedcba

试题F:成绩统计

时间限制:1.0s 内存限制:512.0MB 本题总分:15分

【问题描述】
  小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是
一个 0 到 100 的整数。
  如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
  请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。

【输入格式】
  输入的第一行包含一个整数 n,表示考试人数。
  接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

【输出格式】
  输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分
四舍五入保留整数。

【样例输入】
7
80
92
56
74
88
100
0

【样例输出】
71%
43%

【评测用例规模与约定】
对于50%的评测用例,1≤n≤100。
对于所有评测用例,1≤ns10000。

【代码】

def panduan(x):bai = (x * 1000) % 100ge = int(bai % 10)if ge > 4: # 四舍五入return int(x*100) + 1else:return int(x * 100)n = int(input())all_xs = []
for i in range(n):all_xs.append(int(input()))#print(all_xs)jige = 0
youxiu = 0for i in all_xs:if i > 84:youxiu += 1jige += 1elif i > 59:jige += 1out_jige = panduan(jige / n)
out_youxiu = panduan(youxiu / n)print('{}%'.format(out_jige))
print('{}%'.format(out_youxiu))

【结果】

试题G:单词分析

时间限制:1.0s 内存限制:512.0MB 本题总分:20分

【问题描述】
  小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组
成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不
住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得
最多来分辨单词。
  现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这
个字母出现的次数。

【输入格式】
  输入一行包含一个单词,单词只由小写英文字母组成。

【输出格式】
  输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪
个。如果有多个字母出现的次数相等,输出字典序最小的那个。
  第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。

【样例输入】
langqiao

【样例输出】
a
2

【样例输入】
longlonglongistoolong

【样例输出】
o
6
【评测用例规模与约定】
对于所有的评测用例,输入的单词长度不超过1000。

【代码】

inp = list(input())dic = dict((i, inp.count(i)) for i in inp)
#print(dic)dic_value = []
for key, value in dic.items():dic_value.append(value)dic_max = max(dic_value)dic_key = []
for key, value in dic.items():if value == dic_max:dic_key.append(key)print(min(dic_key))
print(dic_max)

【结果】

试题H:数字三角形

时间限制:1.0s 内存限制:512.0MB 本题总分:20分

【问题描述】

上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。
对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最
大的和。
  路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右
边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过1。

【输入格式】
  输入的第一行包含一个整数 N (1<N≤100),表示三角形的行数。下面的
N 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。

【输出格式】
  输出一个整数,表示答案。

【样例输入】
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

【样例输出】
27

【代码】

def cal():n = int(input())matrix = []for _ in range(n):matrix.append(list(map(int, input().split())))m = n + 1dp = [[0] * m for _ in range(m)]path = [[0] * m for _ in range(m)]for i in range(1, m):for j in range(1, i + 1):dp[i][j] += matrix[i - 1][j - 1]if dp[i - 1][j - 1] > dp[i - 1][j]:path[i][j] = path[i - 1][j - 1] - 1dp[i][j] += dp[i - 1][j - 1]else:if i == 1 and j == 1:path[i][j] == 0else:path[i][j] = path[i - 1][j] + 1dp[i][j] += dp[i - 1][j]ans = 0dp = dp[-1][1:]path = path[-1][1:]for i in range(n):if abs(path[i]) == 1 or abs(path[i]) == 0:ans = max(ans, dp[i])return ansout = cal()
print(out)

【结果】

【解析】
动态规划,当初水平有限没做出来,喊了个老铁做,他的得分是80,帮他捉了点小虫就对了。
传送门:蓝桥杯动态规划练习题–数字三角形

试题 I:平面切分

时间限制:1.0s 内存限制:512.0MB 本题总分:25分

【问题描述】
  平面上有 N 条直线,其中第 i 条直线是 y = Ai · x + Bi。
  请计算这些直线将平面分成了几个部分。

【输入格式】
  第一行包含一个整数 N。
  以下 N 行,每行包含两个整数 Ai, Bi。

【输出格式】
  一个整数代表答案。

【样例输入】
3
1 1
2 2
3 3

【样例输出】
6

【评测用例规模与约定】
对于 50% 的评测用例,1 ≤ N ≤ 4, 10 ≤ Ai, Bi ≤ 10。
对于所有评测用例,1 ≤ N ≤ 1000, 100000 ≤ Ai, Bi ≤ 100000。

【代码】(从 「Pure_white」博主那学的)

n = int(input())
line = []
for _ in range(n):tmp = [int(a) for a in input().split(' ')]line.append(tuple(tmp))
line = list(set(line)) #去重
n = len(line)
judge = lambda pos1,pos2 : abs(pos1[0] - pos2[0]) + abs(pos1[1] - pos2[1]) < 1e-12  #判断两个点是否为同一个点
ans = 2
for i in range(1,n):k1,b1 = line[i]sec = []for j in range(i):k2,b2 = line[j]if k2 == k1: continuepos_x = (b2-b1)/(k1-k2); pos_y = k1*pos_x + b1  #计算交点的坐标sec.append((pos_x,pos_y))m = len(sec)tmpans = m+1#交点的数量小于等于1if m < 2:ans += tmpanscontinue#交点的数量大于等于2,需要去重处理sec = sorted(sec,key=lambda x:x[0]) #对交点集合按x轴进行排列for i in range(1,m):if judge(sec[i-1],sec[i]):tmpans -= 1  #有重复的,产生的区域数就减一ans += tmpans
print(ans)

【解析】

【结果】

试题 J:装饰珠

时间限制:1.0s 内存限制:512.0MB 本题总分:25分

【问题描述】
  在怪物猎人这一款游戏中,玩家可以通过给装备镶嵌不同的装饰珠来获相应的技能,以提升自己的战斗能力。
  已知猎人身上一共有 6 件装备,每件装备可能有若干个装饰孔,每个装饰孔有各自的等级,可以镶嵌一颗小于等于自身等级的装饰珠 (也可以选择不镶嵌)。
  装饰珠有 M 种,编号 1 至 M,分别对应 M 种技能,第 i 种装饰珠的等级为 Li,只能镶嵌在等级大于等于 Li 的装饰孔中。
  对第 i 种技能来说,当装备相应技能的装饰珠数量达到 Ki 个时,会产生Wi(Ki) 的价值。镶嵌同类技能的数量越多,产生的价值越大,即 Wi(Ki i 1) < Wi(Ki)。但每个技能都有上限 Pi(1 ≤ Pi ≤ 7),当装备的珠子数量超过 Pi 时,只会产生 Wi(Pi) 的价值。
  对于给定的装备和装饰珠数据,求解如何镶嵌装饰珠,使得 6 件装备能得到的总价值达到最大。

【输入格式】
  输入的第 1 至 6 行,包含 6 件装备的描述。其中第 i 的第一个整数 Ni 表示第 i 件装备的装饰孔数量。后面紧接着 Ni 个整数,分别表示该装备上每个装饰孔的等级 L(1 ≤ L ≤ 4)。
  第 7 行包含一个正整数 M,表示装饰珠 (技能) 种类数量。
  第 8 至 M + 7 行,每行描述一种装饰珠 (技能) 的情况。每行的前两个整数Lj(1 ≤ Lj ≤ 4) 和 Pj(1 ≤ Pi ≤ 7) 分别表示第 j 种装饰珠的等级和上限。接下来Pj 个整数,其中第 k 个数表示装备该中装饰珠数量为 k 时的价值 Wj(k)。

【输出格式】
  输出一行包含一个整数,表示能够得到的最大价值。

【样例输入】
1 1
2 1 2
1 1
2 2 2
1 1
1 3
3
1 5 1 2 3 5 8
2 4 2 4 8 15
3 2 5 10

【样例输出】
20

【样例说明】
  按照如下方式镶嵌珠子得到最大价值 18,括号内表示镶嵌的装饰珠的种类
编号:
1: (1)
2: (1) (2)
3: (1)
4: (2) (2)
5: (1)
6: (2)
  4 颗技能 1 装饰珠,4 颗技能 2 装饰珠 W1(4) + W2(4) = 5 + 15 = 20。

【评测用例规模与约定】
对于 30% 的评测用例,1 ≤ Ni ≤ 10, 1 ≤ M ≤ 20, 1 ≤ Wj(k) ≤ 500;
对于所有评测用例,1 ≤ Ni ≤ 50, 1 ≤ M ≤ 10000, 1 ≤ Wj(k) ≤ 10000。

【】
怪猎真好玩,这题我走了。

参考博客

第十一届蓝桥杯软件类Python组(最新)(试题回忆+部分个人解答)
2020年第十一届蓝桥杯python大学组第二场省赛真题

第十一届蓝桥杯大赛(2020年)软件类省赛第二场 Python大学组 真题+个人解答相关推荐

  1. 2020第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组

    2020第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组 试题 A: 门牌制作(难度:★) 思路: 代码: 试题 B: 寻找 2020(难度:★★) 思路: 代码: 试题 C: 蛇形填数(难 ...

  2. 第十二届蓝桥杯省赛第二场C++B组真题 【未完结】

    目录 3496. 特殊年份 [简单] 3490. 小平方 [简单] 3491. 完全平方数[简单数论] 3492. 负载均衡[小根堆模拟] 3496. 特殊年份 [简单] #include<bi ...

  3. 第十二届蓝桥杯大赛软件类省赛第一场 Java 大学 B 组题目蓝桥杯JavaB组大赛软件类省赛第十二届第一场

    第十二届蓝桥杯大赛软件类省赛第一场 Java 大学 B 组题目 在线看题 题目PDF下载链接 百度云 链接:https://pan.baidu.com/s/1LSZvUV5dFwNtSbOshORU1 ...

  4. 十一届蓝桥杯大赛延期—心路历程及退赛

    刚开始是从十月份的200人校内初选,然后蓝桥班的60人开班典礼,以及班里来回走或加入的成员,最终确定了参赛人员共计15名,我很荣幸的成为了班长,能够带领大家一起刷题,一起总结,一起打游戏,一起聊天,一 ...

  5. 2020 第十一届蓝桥杯大赛软件类省赛第二场 C/C++ 大学 B 组 完整题面和题解

    文章目录 A:门牌制作 题面: 思路: 代码: 答案: B:既约分数 思路: 代码: 答案: C:蛇形填数 题面: 思路: 代码: 答案: D:跑步锻炼 题面: 思路: 代码: 答案: E:七段码 题 ...

  6. 2020第十一届蓝桥杯软件类省赛第二场C/C++ 大学 B 组(题解)

    试题 A: 门牌制作 问题描述 小蓝要为一条街的住户制作门牌号. 这条街一共有 2020 位住户,门牌号从 1 到 2020 编号. 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需 ...

  7. 第十一届蓝桥杯大赛软件类省赛第二场真题-Java语言B组

    目录 1.门牌制作 2.寻找2020 3.蛇形填数 4.七段码 5.排序 6.成绩分析 7.单词分析 8.数字三角形 9.子串分值和 10.装饰珠 1.门牌制作 [问题描述] 小蓝要为一条街的住户制作 ...

  8. 第十一届蓝桥杯大赛软件类省赛第二场 C/C++ 大学 B 组

    试题 A: 门牌制作 直接暴力算 624 试题 B: 既约分数 直接暴力算 2481215 试题 C: 蛇形填数 规律题,第i行依此打i个数字,矩阵打出来就能看出来了. 我记得是第x行第y个数字就是a ...

  9. 2018第九届蓝桥杯大赛总决赛(软件类)试题 B组

    文章目录 标题:换零钞 标题:激光样式 标题:格雷码 标题:调手表 标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便 ...

最新文章

  1. 表单界面的兼容PC手机端解决方案
  2. linux iptables 命令简介
  3. android c#websocket传送图片
  4. ios开发,地图标注聚集。搜索标注title功能
  5. linux下常用的关机命令有:shutdown、halt、poweroff、init;重启命令有:reboot。下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法。
  6. EFLS开源 | 阿里妈妈联邦学习解决方案详解
  7. python如何读取数据并输出为表格_Python实现将数据库一键导出为Excel表格的实例...
  8. Sublime text3装入插件Anaconda
  9. ExtJs2.0学习系列(14)--Ext.TreePanel之第三式(可增删改的树)
  10. 2017.3.12 每日小记
  11. 什么是ie浏览器_关于几款电脑浏览器的使用感受,你用过吗?
  12. SAP中Search help的使用
  13. C++ 单例模式 std::call_once实现
  14. 搭档之家|打造信息交互平台,推进合作新发展
  15. Salesforce的V2MOM工作法:明确企业在做什么
  16. 如何使用netstat命令验证DDOS入侵?
  17. killall 命令使用
  18. php 子都接受邮件,php iamp 接收邮件,收取邮件,获取邮件列表
  19. IDL编译器系列-入门篇
  20. 【Solr】--简介

热门文章

  1. js字符串与数字相加减
  2. TOM VIP至尊邮|商务人士必用的个人邮箱
  3. 【puppet server 7.9】Centos参照官方安装指南部署master和agent (puppet安装)
  4. Linux环境编译运行C语言程序
  5. 七牛云对象存储空间绑定自己的域名
  6. 同样是工作,为何别人成就不断?
  7. bootstrap使用详解
  8. 软件测试知识点和面试题--接口测试篇
  9. linux7 输入法出不来,Ubuntu 7.10中scim输入法调不出来的解决
  10. matlab git stash,[已解决]git stash 丢弃