当前位置:主页 > 查看内容

第十一届蓝桥杯大赛软件类省赛第二场python大学组题解(源码+注

发布时间:2021-07-31 00:00| 位朋友查看

简介:文章目录 一.考试须知 二.题解 试题A门牌制作 1.题目 2.解析 3.源码 试题B寻找2020 1.题目 2.解析 3.源码 试题C跑步锻炼 1.题目 2.解析 3.源码 试题D蛇形填数 1.题目 2.解析 3.源码 试题E排序 1.题目 2.解析 试题F成绩统计 1.题目 2.解析 3.源码 试题G单词分……

一.考试须知

在这里插入图片描述

二.题解

试题A:门牌制作

1.题目

在这里插入图片描述

2.解析

本题求解从1到2020的数字中出现了多少个2,用循环遍历将每个数字字符串化,统计每个字符串中的2的数量并相加即可

3.源码
num = 0
for i in range(2021):
    num += str(i).count("2")
print(num)

答案等于624

试题B:寻找2020

1.题目

在这里插入图片描述

2.解析

循环生成二维列表,按照规则依次遍历

3.源码
num = [list(input()) for i in range(6)]
ans = 0
# 行为2020
for i in range(6):
    for j in range(3):
        if num[i][j] == "2" and num[i][j + 1] == "0" and num[i][j + 2] == "2" and num[i][j + 3] == "0":
            ans += 1
# 列为2020
for i in range(3):
    for j in range(6):
        if num[i][j] == "2" and num[i + 1][j] == "0" and num[i + 2][j] == "2" and num[i + 3][j] == "0":
            ans += 1
# 斜为2020
for i in range(3):
    for j in range(3):
        if num[i][j] == "2" and num[i + 1][j + 1] == "0" and num[i + 2][j + 2] == "2" and num[i + 3][j + 3] == "0":
            ans += 1
print(ans)

答案为5

试题C:跑步锻炼

1.题目

在这里插入图片描述

2.解析

运用datetime库,详细库讲解可以查看博文python常用标准库总结

3.源码
import datetime

num = 0
start_time = datetime.datetime(2000, 1, 1)
end_time = datetime.datetime(2020, 10, 1)
while start_time <= end_time:
    if start_time.day == 1 or start_time.weekday() == 0:
        num += 2
    else:
        num += 1
    start_time += datetime.timedelta(days=1)
print(num)

答案为8879

试题D:蛇形填数

1.题目

在这里插入图片描述

2.解析

不难发现规律,斜线上的数字差是4的倍数

在这里插入图片描述

3.源码
n = 1
for i in range(20):
    n += i * 4
print(n)

答案为761

试题E:排序

1.题目

在这里插入图片描述

2.解析

这其实是一道思维题,我们首先要清楚冒泡排序的原理,假如要把987654321从小到大排序,则需要从头依次找到最大的数字依次交换,则需要交换9*(9-1)/2次(共36次)即可把原数列交换成123456789,如果数列不是完全逆序,则不满足该公式
由冒泡排序可知,交换的次数和字符串的长度有关,如果字符串的的长度为n,且为完全逆序,则交换次数则为n*(n-1)/2,最为接近100次的且最短的即15字符的字符串,即为
onmlkjighfedecba,交换该字符串共需要105次,题目要求100次,所以要减少5次,把第六位的字符提前到首位即可,所以最终答案为jonmlkighfedecba

试题F:成绩统计

1.题目

在这里插入图片描述
在这里插入图片描述

2.解析

简单的模拟

3.源码
n = int(input())
x = 0
y = 0
for i in range(n):
    score = int(input())
    if score >= 60:
        x += 1
    if score >= 85:
        y += 1
print(str(int(round(x / n, 2) * 100)) + "%")
print(str(int(round(y / n, 2) * 100)) + "%")

试题G:单词分析

1.题目

在这里插入图片描述
在这里插入图片描述

2.解析

签到题

3.源码
s = list(input())
max_word = "a"
max_number = 0
for i in s:
    temp = s.count(i)
    if temp > max_number:
        max_word = i
        max_number = temp
print(max_word)
print(max_number)

明天考试,后面的正在写

试题H:数字三角形

1.题目

在这里插入图片描述

在这里插入图片描述

2.解析

二叉树遍历即可

3.源码

试题I:平面切分

1.题目

在这里插入图片描述

2.解析

找规律

3.源码

试题J:装饰珠

1.题目

在这里插入图片描述在这里插入图片描述

2.解析

动态规划背包问题

3.源码
;原文链接:https://blog.csdn.net/qq_50216270/article/details/115736249
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:PIE/CPU中断响应过程 下一篇:没有了

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐