IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 蓝桥杯真题系列:第十一届蓝桥杯C语言B组集锦 -> 正文阅读

[C++知识库]蓝桥杯真题系列:第十一届蓝桥杯C语言B组集锦

第一题:门牌制作

解答:作为填空题第一题,难度比较低,暴力查2即可。

cnt = 0
for i in range(1,2021):
    for j in str(i):
        if j == '2':
            cnt = cnt + 1

print(cnt)  # 624

第二题:既约分数

?

?题解:这个题我想到的办法就是暴力解决,生成1到2020的分母和1到2020的分子,看一看是不是最大公约数是不是为1,然后利用python本地库fraction进行分数相似性判断(看看是不是分数相等)。需要注意的是,暴力法python计算很慢。(反正是填空题,咱们先做下一道)

from fractions import Fraction


def gong_yue(m, n):
    if m > n:
        sm = n
    else:
        sm = m
    for i in range(1, sm + 1):
        if m % i == 0 and n % i == 0:
            hcf = i
    return hcf


target_lst = []
for i in range(1, 2021):
    for j in range(1, 2021):
        if gong_yue(i, j) == 1 and Fraction(i, j) not in target_lst:
            target_lst.append(Fraction(i, j))
print(len(target_lst))

实在想不起来python这个本地库的内容了,在idle上按F1打开帮助文档救急

第三题:蛇形填数

?题解:我们不难看出1行1列数在1这个数组中,第2行第2列的数在第456数组中的中间位置,第三行第三列在11,12,13,14,15这个数组中的中间位置。我们按条斜线为一个数组,不难看出第n行n列就在等差数列数组1,3,5,7~~~中,即为第39个数组,我们先生成一个类似于[[1],[2,3],[4,5,6],[7,8,9,10]~~~]这样的形式代表一条斜线上的数字,第39条斜线数组即为位置为38位置的数组(从0开始算),这个数组内元素个数一定为奇数为29,那中间的位置为第15号(即为14号位置的元素),后边比较坑。

cnt = 1
num = 0
all_lst = []
lst = []
for i in range(1, 10000):
    lst.append(i)
    num = num + 1
    if cnt == num:
        all_lst.append(lst)
        lst = []
        cnt = cnt + 1
        num = 0
# 20行20列对应在第39次循环中
print(all_lst[38][14])
# 756

第四题:跑步训练

?题解:这个题我做起来比较麻烦,要时刻不断地维护四个变量月中第n天,月份,星期,年。关系比较复杂,中间还穿插有闰年等东西,做题是要集中注意力,理清楚几个变量之间的关系,有个小技巧就是在运行工程中穿插print函数打印当前的一些数据,我们便能够轻松观察到问题出现在哪个地方,便可以快速解决。还有,在已经写完的代码上加上注释,看似麻烦其实大大减轻了我们的思考强度。

def run(n):
    if n % 4 == 0:
        return True
    else:
        return False


run_day = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
ping_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
start_year = 2000  # 记录年份
cnt_mon = 0  # 记录年中第几月
month_day = 1  # 记录月中第几天
cnt = 6  # 记录星期几
distance = 0  # 记录距离
while True:
    if cnt == 1 or month_day == 1:  # 判断当前距离
        distance = distance + 2
    else:
        distance = distance + 1
    if start_year == 2020 and cnt_mon == 9 and month_day == 1:
        break
    if cnt == 7:  # 判断星期,进行星期迭代
        cnt = 1
    else:
        cnt = cnt + 1
    if run(start_year):
        if month_day == run_day[cnt_mon]:  # 闰年月份增加
            month_day = 1
            cnt_mon = cnt_mon + 1
        else:  # 闰年日期增加
            month_day = month_day + 1
    else:
        if month_day == ping_day[cnt_mon]:  # 平年月份增加
            month_day = 1
            cnt_mon = cnt_mon + 1
        else:  # 平年日期增加
            month_day = month_day + 1
    if cnt_mon == 12:  # 年份增加
        start_year = start_year + 1
        cnt_mon = 0
print(distance)  # 8879

第五题:七段码

题解:啊这个,还没学过。感觉有点像回溯。

第六题: 成绩统计

?

?题解:这道题比较简单没什么说的

num = int(input())
chengji_lst = []

good = 0
normal = 0
for i in range(num):
    c = int(input())
    if c >= 85:
        good = good + 1
    if c >= 60:
        normal = normal + 1
normal_range = normal / num * 100
good_range = good / num * 100
a = normal_range - int(normal_range)
b = good_range - int(good_range)
if a >= 0.5:
    normal_range = int(normal_range) + 1
else:
    normal_range = int(normal_range)
if b >= 0.5:
    good_range = int(good_range) + 1
else:
    good_range = int(good_range)
print(str(normal_range) + '%')
print(str(good_range) + '%')

第七题:回文日期

?

解题思路:这个题我认为跟上边的跑步锻炼那个题差不多,部分代码复制一下就可以解决这个问题

def run(n):
    if n % 4 == 0:
        return True
    else:
        return False


run_day = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
ping_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

data = input()
year = int(data[0:4])
month = int(data[4:6])
day = int(data[6:])
status = []
hashmap = {}
while True:
    if run(year):
        if day == run_day[month - 1]:
            day = 1
            month = month + 1
        else:
            day = day + 1
    else:
        if day == ping_day[month - 1]:
            day = 1
            month = month + 1
        else:
            day = day + 1
    if month == 13:
        year = year + 1
        month = 1
    str_month = str(month)
    str_day = str(day)
    if len(str(month)) == 1:
        str_month = '0' + str(month)
    if len(str(day)) == 1:
        str_day = '0' + str(day)
    ge_shi = str(year) + str_month + str_day
    if ge_shi == ge_shi[::-1]:
        if 'a' not in status:
            hashmap['normal'] = ge_shi
            status.append('a')
        if ge_shi[0:2] == ge_shi[2:4] and ge_shi[7:5:-1] == ge_shi[5:3:-1] and ge_shi[0:2] == ge_shi[7:5:-1]:
            hashmap['ab'] = ge_shi
            break
print(hashmap['normal'])
print(hashmap['ab'])

?第八题:子串分值和

?题解:利用集合的特性

a = input()
long = len(a)
head = 0
tail = 1
s = 0
while True:
    s = len(set(a[head:tail])) + s
    if tail == long:
        head = head + 1
        tail = head + 1
    else:
        tail = tail + 1
    if head == long:
        break

print(s)

第九题:平面切分

?

?后边这两道实在做不出来

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:24:21  更:2022-01-25 10:25:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:56:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码