- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第十四届蓝桥杯模拟赛大学B组Python
第一题
填空题
请找到一个大于2022的最小数,这个数转换成十六进制之后,所有的数位(不含前导0)都为字母(A到F)。
请将这个数的十进制形式作为答案提交。
刚开始没看懂什么意思,先使用下方语句得到2022的十六进制是0x7E6,难么比它大的数且不含数字的16进制数为AAA,将答案2730填入空中即可
print(hex(2022))
print(int(0xAAA))
第二题
填空题
在Excel中,列的名称使用英文字母的组合。
前26列用一个字母,依次为A到Z,接下来26*26列使用两个字母的组合,依次为AA到ZZ。
请问第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列,而xlsx格式的表格似乎可以拖动到∞行。
BYR BYS BYT
2020 2021 2022
第三题
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。
请问从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.split(-)
num1,num2,num3=0,0,0
foriinyear:
num1+=int(i)
foriinmonth:
num2+=int(i)
foriinday:
num3+=int(i)
ifnum1==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=1)
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种取法中,有多少种取法取出的两个数的乘积大于等于2022。
就是用一个两层循环使得数字两两之间相乘就可以了,需要注意的是要排除自己乘自己的情况。
答案是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,
文档评论(0)