版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十四届蓝桥杯模拟赛大学B组Python
第一题
填空题
请找到一个大于2022的最小数,这个数转换成十六进制之后,所有的数位(不含前导0)
都为字母(A到F)。
请将这个数的十进制形式作为答案提交。
刚开始没看懂什么意思,先使用下方语句得到2022的十六进刎是0x7E6,难么比它大的数
且不含数字的16进制数为AAA,将答案2730填入空中即可
print(hex(2022))
print(int(OxAAA))
第二题
填空题
在Excel中,列的名称使用英文字母的组合。
前26列用一个字母,依次为A到Z,接下来26*26列使用两个字母的组合,依次
为AA到ZZo
请问第2022列的名称是什么?
解法1:这题很浅显了,其实就是计算出2022的27进制是多少?填空题不考虑时间复杂度
了,直接使用暴力算法。结果是BYT
foriinrange(26):
forjinrange(26):
forkinrange(26):
if26*26*i+26*j+k==2022:
s=chr(i+96)+chr(j+96)+chr(k+96)
break
print(s.upper())
解法2:它已经告诉我们用的是excel了,那我们就听它的用excel来做吧!毕竟填空题讲究
的就是不择手段。
需要值得注意的是我用的xls格式的只能拖动到256歹U,而xlsx格式的表格似乎可以拖动到
8行。
BYRBYSBYT
202020212022
第三题
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和
日的各位数字之和。
请问从1900年1月1日至9999年12月31日,总共有多少天,年份的数位数
字之和等于月的数位数字之和加日的数位数字之和。
例如,2022年11月13日满足要求,因为2+0+2+2=(1+1)+(1+3)。
请提交满足条件的日期的总数量。
看到诸如此类的日期题,立刻想到的是python的datetime库,它属于python内置的库,并
不属于第三方库,我们在算法比赛中是可以调用的。
最后算出来的结果是70910,使用到的算法比较暴力,需要等大搞•分钟程序才会计算出最
终结果,填空题就不纠结这么多了。
importdatetime
defcheck(time):
year,month,day-time.splitf'-')
numl,num2,num3=0,0,0
foriinyear:
numl+=int(i)
foriinmonth:
num2+=int(i)
foriinday:
num3+=int(i)
ifnuml==num2+num3:
returnTrue
else:
returnFalse
num=0
start=datetime.date(1900,1,1)
end=datetime.date(9999,12,31)
whilestart<=end:
ifcheck(str(start)):
num+=1
ifstart==end:
break
start+=datetime.timedelta(days=l)
print(num)#答案是70910
第四题
小蓝有30个数,分别为:99,22,51,63,72,61,20,88,40,21,63,30,11,18,99,12,93,16,
7,53,64,9,28,84,34,96,52,82,51,77。
小蓝可以在这些数中取出两个序号不同的数,共有30*29/2=435种取法。
请问这435种取法中,有多少种取法取出的两个数的乘积大于等于2022o
就是用•个两层循环使得数字两两之间相乘就可以了,需要注意的是要排除自己乘自己的情
况。
答案是189
ans=0
li=[99,22,51,63,72,61,20,88,40,21,63,30,11,18,99,12,93,16,7,53,64,9,28,84,34,96,
52,82,51,77]
foriinrange(len(li)):
forjinrange(len(li)):
#此处if语句的目的是排除自己乘自己的情况
ifi==j:
continue
else:
ifli[i]*li[j]>=2022:
print(li[i]*li[j])
ans+=1
print(ans)
第五题
填空题
问题描述
小蓝有一个30行60列的数字矩阵,矩阵中的每个数都是。或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
如果从一个标为1的位置可以通过上下左右走到另一个标为1的位置,则称两个位
置连通。
与某一个标为1的位置连通的所有位置(包括自己)组成一个连通分块。
请问矩阵中最大的连通分块有多大?
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提
交答案时只填写这个整数,填写多余的内容将无法得分。
使用dfs(深度优先搜索算法),最终答案是148
defdfs(x,y):
globalcur,vis
fori,jin[[0,1],[1,0],[-1,0],[0f-1]]:
dx=i+x
dy=j+y
ifdx<0ordy<0ord:<>=30ordy>=60ormp[dx][dy]=='O'orvis[dx][dy]:
continue
cur+=1
vis[dx][dy]=1
dfs(dx,dy)
n,m=30,60
mp=[]
for_inrange(n):
mp.append(input())
vis=[[0]*mfor_inrange(n)]
ans,cur=0,0
foriinrange(n):
forjinrange(m):
ifmp[i][j]=='O':
continue
vis=[(0]*mfor_inrange(n)]
vis[i]D]=1
cur=1
dfs(ij)
ans=max(ans,cur)
print(ans)
30
31
第六题
给定一天是一周中的哪天,请问n天后是一周中的哪天?
输入格式
输入第一行包含一个整数w,表示给定的天是一周中的哪天,w为1到6分别表示
周一到周六,w为7表示周日。
第二行包含一个整数n。
输出格式
输出一行包含一个整数,表示n天后是一周中的哪天,1到6分别表示周一到周六,
7表示周日。
样例输入
6
10
样例输出
这个题目就是让你输入周x,算出y天后是周z
需要注意的是如果周三的4天之后是周日,会被7整除,结果会变成0,其实是周日,答案
应该是7,所以我们添加一个if语句进行判断。
a=int(inputO)#今天是周x?
b=int(input())#y天之后?
ans=(a+b)%7
ifans==0:
ans=7
#if语句也可以使用这种写法
#ans=ansifans==0else7
print(ans)it周x的y天之后是周z
1
2
3
4
5
6
7
8
9
10
11
12
第七题
小蓝负责一块区域的信号塔安装,整块区域是一个长方形区域,建立坐标轴后,西南
角坐标为(0,0),东南角坐标为(W,0),西北角坐标为(0,H),东北角坐标为(W,H)。其
中W,H都是整数。
他在n个位置设置了信号塔,每个信号塔可以覆盖以自己为圆心,半径为R的圆形
(包括边缘)。
为了对信号覆盖的情况进行检查,小蓝打算在区域内的所有横纵坐标为整数的点进行
测试,检查信号状态。其中横坐标范围为0到W,纵坐标范围为0到H,总共测试(W+1)
*(H+1)个点。
给定信号塔的位置,请问这(W+1)*(H+1)个点中有多少个点被信号覆盖。
输入格式
输入第一行包含四个整数W,H,n,R,相邻整数之间使用一个空格分隔。
接下来n行,每行包含两个整数x,y,表示一个信号塔的坐标。信号塔可能重合,表
示两个信号发射器装在了同一个位置。
输出格式
输出一行包含一个整数,表示答案。
样例输入
101025
00
70
样例输出
57
评测用例规模与约定
对于所有评测用例,1<=W,H<=100,1<=n<=100,1<=R<=100,0<=x<=W,0<=y<=
Ho
题目看起来很难,其实就是先构造一个大小为(W+1)*(H+1)的二维数组,然后在指定坐标放
入n个信号塔,信号塔的信号范围是R,求数组中有多少个点信号被覆盖.
模拟的时候并没有做出来,如果有更好的办法或思路欢迎下方留言。
defcheckfx,y):
foriinrange(n):
if(x-point[i][0])**2+(y-point[i][l])♦*2<=r*r:
returnTrue
returnFalse
w,h,n,r=map(int,input().split*))
point=[]
for_inrange(n):
row-list(map(int,input。.split。))
point.append(row)
ans=0
foriinrange(w+1):
forjinrange(h+1):
ifcheck。,j):
ans+=1
print(ans)
第八题
小蓝有一个n*m大小的矩形水域,小蓝将这个水域划分为n行m列,行数从1到
n标号,列数从1到m标号。每行和每列的宽度都是单位1。
现在,这个水域长满了水草,小蓝要清理水草。
每次,小蓝可以清理一块矩形的区域,从第rl行(含)到第r2行(含)的第cl列
(含)到c2列(含)。
经过一段时间清理后,请问还有多少地方没有被清理过。
输入格式
输入第一行包含两个整数n,m,用一个空格分隔。
第二行包含一个整数t,表示清理的次数。
接下来t行,每行四个整数rl,cl,r2,c2,相邻整数之间用一个空格分隔,表示一次清
理。请注意输入的顺序。
输出格式
输出一行包含一个整数,表示没有被清理过的面积。
样例输入
23
2
1113
1222
样例输出
2
样例输入
3020
2
551015
67159
样例输出
519
评测用例规模与约定
对于所有评测用例,1<=rl<=r2<=n<=100,1<=cl<=c2<=m<=100,0<=t<=100»
题目的意思是小蓝要去清理n*m大小的水池,清理t次,每一次清理都会把(rl,clM2c2)
区域内的杂草给清理。
这题和上一题类似,都是需要将二维数组中的t个指定区域遍历一遍。
答案代码如下:
n,m=map(int,input().split(sep=""))
t=int(input())
rules=[]
foriinrange(t):
rule=list(map(int,input().split(sep="")))
rules.append(rule)
#importtime
#ti=time.localtimeO
sq=(]
foriinrange(n):
li=[0]*m
sq.append(li)
#print("清理前--")
#foriinsq:
#print(i)
forruleinrules:
foriinrange(rule[0]-l,rule7]):
forjinrange(rule(l]-l,rule[3]):
sq(i][j]=1
#print("清理后一一")
#foriinsq:
#print(i)
ans=n*m
foriinsq:
forjini:
ifj==l:
ans-=1
#print("答案--…")
print(ans)
#print(ti.tm_sec-time.localtime().tm_sec)
思考过这中暴力算:法能不能在规定时间(2s)内算出正确答案,于是我自己创建了一组实验
数据,可以把我的代码中的卜.而三句注释语句加入执行,然后使用卜方我的最大测试数据来
测试,发现时间能够在1s内完成运算,远超题目要求
#importtime
#ti=time.localtime()
#print(ti.tm_sec-time.localtime().tm_sec)
1
2
3
测试数据:
min
100100
100
119825
114131
113826
119436
11503
111368
111882
11177
114372
118374
1110052
112337
112143
11778
113530
11474
118940
11682
119746
114244
11254
11776
112910
119015
11241
116186
116665
113691
115127
111733
116096
117485
111781
113089
119627
112243
11512
111029
116391
118214
113892
115619
114546
119458
111330
116464
118228
11586
1187
117244
11523
112136
117649
119078
115388
118796
114972
111219
11890
116828
114917
114519
118691
116576
11349
119736
114G95
115794
117537
112354
116979
118139
11604
112337
117998
116438
111794
117678
11357
111633
119499
114430
11551
111792
113048
116596
118638
117711
111771
118840
11626
11416
112945
112447
116681
119935
119157
114160
112789
11539
min
第九题
小蓝准备在一个空旷的场地里面滑行,这个场地的高度不一,小蓝用一个n行m列
的矩阵来表示场地,矩阵中的数值表示场地的高度。
如果小蓝在某个位置,而他上、下、左、右中有一个位置的高度(严格)低于当前的
高度,小蓝就可以滑过去,滑动距离为1。
如果小蓝在某个位置,而他上、下、左、右中所有位置的高度都大于等于当前的高度,
小蓝的滑行就结束了。
小蓝不能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安庆职业技术学院《市场调研与预测》2025-2026学年期末试卷
- 集美工业职业学院《健康教育与健康促进》2025-2026学年期末试卷
- 安徽林业职业技术学院《第二语言习得》2025-2026学年期末试卷
- 厦门东海职业技术学院《国际贸易实务》2025-2026学年期末试卷
- 合肥信息技术职业学院《内部控制与风险管理》2025-2026学年期末试卷
- 延边职业技术学院《运动控制系统》2025-2026学年期末试卷
- 南昌理工学院《毒理学》2025-2026学年期末试卷
- 福州理工学院《大学生职业与发展》2025-2026学年期末试卷
- 运城护理职业学院《广告创意表现》2025-2026学年期末试卷
- 泉州工艺美术职业学院《电路原理》2025-2026学年期末试卷
- 医院手术室净化系统维保方案
- QES管理体系审核检查表完整范例
- JGJT341-2014 泡沫混凝土应用技术规程
- 薄膜材料与技术(全套课件)上
- EPC总承包项目采购方案
- 51单片机读写SD卡程序实例完整版
- 人教新课标曹禺和语文教师谈《雷雨》
- 情绪压力管理与阳光心态
- SB/T 10782-2012钟表销售服务规范
- GB/T 17466.24-2017家用和类似用途固定式电气装置的电器附件安装盒和外壳第24部分:住宅保护装置和其他电源功耗电器的外壳的特殊要求
- 安全风险辨识记录
评论
0/150
提交评论