第十四届蓝桥杯第三期模拟赛 【python】

您所在的位置:网站首页 python列表的长度是多少 第十四届蓝桥杯第三期模拟赛 【python】

第十四届蓝桥杯第三期模拟赛 【python】

2023-03-09 00:34| 来源: 网络整理| 查看: 265

第十四届蓝桥杯第三期模拟赛 【python】

文章目录 第十四届蓝桥杯第三期模拟赛 【python】✨最小的十六进制(python的16进制)❓️问题描述答案提交🧠思路🖥︎参考答案 ✨Excel的列(进制转化)❓️问题描述答案提交🧠思路🖥︎参考答案 ✨相等日期(datetime日期)❓️问题描述答案提交🧠思路🖥︎参考答案 ✨多少种取法(简单模拟)❓️问题描述答案提交🧠思路🖥︎参考答案 ✨最大连通分块(DFS)❓️问题描述答案提交🧠思路🖥︎参考答案 ✨哪一天(模拟题)❓️问题描述输入格式输出格式样例输入样例输出评测用例规模与约定🧠思路🖥︎参考代码 ✨信号覆盖(暴力模拟)❓️问题描述输入格式输出格式样例输入样例输出评测用例规模与约定🧠思路🖥︎参考代码 ✨清理水草(简单模拟)❓️问题描述输入格式输出格式样例输入样例输出样例输入样例输出评测用例规模与约定🧠思路🖥︎参考代码 ✨最长滑行(DFS搜索)❓️问题描述输入格式输出格式样例输入样例输出样例说明评测用例规模与约定🧠思路🖥︎参考代码 ✨区间最小值(ST表模板题)❓️问题描述输入格式输出格式样例输入样例输出评测用例规模与约定🧠思路RMQ问题ST ( Sparse Table ) 算法查询区间 🖥︎参考代码

✨最小的十六进制(python的16进制) ❓️问题描述

请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。 请将这个数的十进制形式作为答案提交。

答案提交

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

🧠思路

这道题和第一期模拟赛的第一题都是考虑到了二进制,对于python来说,还是很快的,只需要从2022开始遍历,利用python的bin函数,就可以迅速将十进制转成二进制,然后再减去首字母的两个0b即可,判断最低的6个尾数为0即可。

🖥︎参考答案

2730

i = 2023 # 从大于2022的数开始遍历 while True: s = hex(i)[2:] # 转化为16进制 if s.isalpha(): # 如果全是字母返回true print(i,s) # 2730 aaa break i += 1 ✨Excel的列(进制转化) ❓️问题描述

在 Excel 中,列的名称使用英文字母的组合。前 26 列用一个字母,依次为 A 到 Z,接下来 26*26 列使用两个字母的组合,依次为 AA 到 ZZ。

请问第 2022 列的名称是什么?

答案提交

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

🧠思路

如果以2个字母的组合为列名,最多为26x26=676个列,所以2022列就是以三个字母的组合去得到的,其实简单一点这道题也可以进行简单的手算,但是仔细一看,实际上就是2022转成26进制即可,但是这个26进制没有数字,是从A~Z。

其实这道题,我们也可以列一个数组,穷举把所有数算出来,然后取对应位置2022的数据出来就好了,这两种方法都OK的。

🖥︎参考答案

BYT

转化为26进制

def to_base_26(num): """ Convert an integer to base 26. """ if num == 0: return 'A' # 如果为0 letters = [] while num > 0: num, rem = divmod(num, 26) letters.append(chr(ord('A') + rem - 1)) return ''.join(reversed(letters)) # 进行翻转 print(to_base_26(2022))

穷举法

def get(x, y, z): return x * 26 * 26 + y * 26 + z def ans(x, y, z): s = '' s += chr(ord('A') + x - 1) s += chr(ord('A') + y - 1) s += chr(ord('A') + z - 1) return s n = 2022 for i in range(1, 27): for j in range(1, 27): for k in range(1, 27): if get(i, j, k) == n: print(ans(i, j, k)) exit() ✨相等日期(datetime日期) ❓️问题描述

对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。

例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。

请提交满足条件的日期的总数量。

答案提交

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

🧠思路

这道题最简单的话,就是可以利用python的datetime库进行判断,转成字符串进行计数,最后把符合条件的结果计数输出就是最后日期的总数量。

🖥︎参考答案

70910

import datetime start = datetime.date(1900,1,1) end = datetime.date(9999,12,31) # 把字符串转为会数字,2022转化为2+0+2+2=6 def get_num(n): return sum([int(i) for i in str(n)]) cnt = 0 while start = 2022: # >=2022 cnt += 1 print(cnt) # 189 ✨最大连通分块(DFS) ❓️问题描述

小蓝有一个 30 行 60 列的数字矩阵,矩阵中的每个数都是 0 或 1 。如果从一个标为 1 的位置可以通过上下左右走到另一个标为 1 的位置,则称两个位置连通。与某一个标为 1 的位置连通的所有位置(包括自己)组成一个连通分块。 请问矩阵中最大的连通分块有多大?

110010000011111110101001001001101010111011011011101001111110 010000000001010001101100000010010110001111100010101100011110 001011101000100011111111111010000010010101010111001000010100 101100001101011101101011011001000110111111010000000110110000 010101100100010000111000100111100110001110111101010011001011 010011011010011110111101111001001001010111110001101000100011 101001011000110100001101011000000110110110100100110111101011 101111000000101000111001100010110000100110001001000101011001 001110111010001011110000001111100001010101001110011010101110 001010101000110001011111001010111111100110000011011111101010 011111100011001110100101001011110011000101011000100111001011 011010001101011110011011111010111110010100101000110111010110 001110000111100100101110001011101010001100010111110111011011 111100001000001100010110101100111001001111100100110000001101 001110010000000111011110000011000010101000111000000110101101 100100011101011111001101001010011111110010111101000010000111 110010100110101100001101111101010011000110101100000110001010 110101101100001110000100010001001010100010110100100001000011 100100000100001101010101001101000101101000000101111110001010 101101011010101000111110110000110100000010011111111100110010 101111000100000100011000010001011111001010010001010110001010 001010001110101010000100010011101001010101101101010111100101 001111110000101100010111111100000100101010000001011101100001 101011110010000010010110000100001010011111100011011000110010 011110010100011101100101111101000001011100001011010001110011 000101000101000010010010110111000010101111001101100110011100 100011100110011111000110011001111100001110110111001001000111 111011000110001000110111011001011110010010010110101000011111 011110011110110110011011001011010000100100101010110000010011 010011110011100101010101111010001001001111101111101110011101 答案提交

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

🧠思路

这道题是一道

🖥︎参考答案

148

import sys sys.setrecursionlimit(1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3