- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
蓝桥杯题库及答案python版
这是一道结果填空的题,只需要算出一个整数作为结果提
交即可。
input_str=input()num=len(input_str)searched=[]foriinra
nge(num):forjinrange(num):ifstr(input_str[j:j+i:])noti
nsearched:searched.append(str(input_str[j:j+i:]))print
(len(searched))
输出结果为:100
(2)年号字串小明用字母A对应数字1,B对应
2,以此类推,用Z对应26。对于27以上的数字,
小明用两位或更长位的字符串来对应,例如AA对应
27,AB对应28,AZ对应52,LQ对329。请问2019
对应的字符串是什么?
该题就是一个进制转换的问题,将十进制转换为26进制,因
为是1~26,其中只有26个数,所以虽然是满27才进位,但
应该是转26进制。
string=ABCDEFGHIJKLMNOPQRSTUVWXYZnum=2019yu=[]whilen
um=26:yu.append(num%26)num=num//26yu.append(num)forii
nyu[::-1]:print(string[i-1],end=)
输出结果为:BYQ
(3)数列求值【问题描述】给定数列1,1,1,3,
5,9,17,…,从第4项开始,每项都是前3项的
和。求第项的最后4位数字。【答案提交】这是一
道结果填空的题,你只需要算出结果后提交即可。本
题的结果为一个4位整数(提示:答案的千位不为
0),在提交答案时只填写这个整数,填写多余的内
容将无法得分。
arr=[0foriinrange()]arr[0]=arr[1]=arr[2]=1foriinrange(
3,):arr[i]=(arr[i-1]+arr[i-2]+arr[i-3])%10000#这个求余
可以保证每一次计算只保留后四位(4个0)#但是不会影响数
列的计算,因为数列的后几位都是由后面决定的,所以前面舍
去也不会影响后几位的值print(arr[])
输出为:4659
(4)数的分解把2019分解成3个各不相同的正整
数之和,并且要求每个正整数都不包含数字2和
4,一共有多少种不同的分解方法?注意交换3个
整数的顺序被视为同一种方法,例如1000+1001+18
和1001+1000+18被视为同一种。
思路:该题用两个for循环进行求解,首先为了保证不重复,
那我们只要保证三个数i,j,k始终是又小到大递增即可,即
我们设置两个数的取值范围为:
第一个数是i取值范围为:[1,675],第二个数为j取值范围
为:[i+1,1344]
(此处的上限是因为i是三个数中最小,所以小于总和的三分
之一,j是第二小所以应该小于总和的三分之二)通过减少上
限缩短循环时长
然后判断第三个数是否比j大,如果是则计数变量+1,保证了
三个数的大小顺序始终固定,就不会出现“1000+1001+18和
1001+1000+18”这样的重复计数情况发生了。
当然,在这之前我们首先要判断i,j,k中是否包含‘2’和
‘4’。这个使用一个函数即可解决。
n=2019count=0defcheck(n):n_str=list(str(n))if2notinn
_str:if4notinn_str:returnTruereturnFalseforiinrange(
1,676):forjinrange(i+1,1345):ifcheck(i)andcheck(j):k=n
-i-jifkjandcheck(k):count+=1print(count)
输出为:40785
文档评论(0)