网站大量收购闲置独家精品文档,联系QQ:2885784924

第十四届蓝桥杯 Python B组 题目简析.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第十四届蓝桥杯PythonB组题目简析

试题A:2023

【问题描述】

请求出在至中,有多少个数中完全不包含2023。

完全不包含2023是指无论将这个数的哪些数位移除都不能得到2023。

例如33220022都完全不包含2023,而20193213则

含有2023(后者取第1,2,6,8个数位)。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一

个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路与代码

用字符串的find方法。可以指定搜索的范围,那么搜完第一个,我们将范围缩小来继续搜。

只要有一个找不到就返回False。

deffind_2023(s):

#记录第一第二位

one_l=s.find(2)

ifone_l==-1:

returnFalse

two_l=s.find(0,one_l+1)#从下一位开始找

iftwo_l==-1:

returnFalse

third_l=s.find(2,two_l+1)

ifthird_l==-1:

returnFalse

fourth_l=s.find(3,third_l+1)

iffourth_l==-1:

returnFalse

returnTrue

cnt=0forainrange1,1):

res=find_2023(str(a))

ifresisFalse:

cnt+=1print(cnt)

试题?B:?硬币兑换

【问题描述】

小蓝手中有2023种不同面值的硬币,这些硬币全部是新版硬币,其中第

i(1≤?i?≤2023)种硬币的面值为?i?,数量也为?i?个。硬币兑换机可以进行硬币兑

换,兑换规则为:交给硬币兑换机两个新版硬币?coin1和?coin2,硬币兑换机会

兑换成一个面值为?coin1+?coin2的旧版硬币。

小蓝可以用自己已有的硬币进行任意次数兑换,假设最终小蓝手中有?K?种

不同面值的硬币(只看面值,不看新旧)并且第?i(1≤?i?≤?K)种硬币的个数为

sumi。小蓝想要使得max{sum1,?sum2,···,?sumK}的值达到最大,请你帮他计算

这个值最大是多少。

注意硬币兑换机只接受新版硬币进行兑换,并且兑换出的硬币全部是旧版

硬币。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一

个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路与代码

(不一定对,只是我的做法)

要求最后某一种的硬币数量最多。范围为1~2023。你如果加的和超过了2023这个阈值,那么在总数上,实际上是减少了的(2-1)。那么单在范围内考虑的话,不妨考虑最大的数,2023=1+2022,只能加1次2023;2023=2+2021,能加2次2023。...2023=1011+1012,能加1011次2023。

那么2023此时的次数就是1+2+3+...+1011+2023,用编程求解即可

cnt=2023

foriinrange(1,1011+1,1):

cnt+=i

print(cnt)

试题?C:?松散子序列

时间限制:10.0s

内存限制:512.0MB

本题总分:10分

【问题描述】

给定一个仅含小写字母的字符串?s?,假设?s?的一个子序列?t?的第?i?个字符

对应了原字符串中的第?pi?个字符。我们定义?s?的一个松散子序列为:对于?i?1

总是有?pi???pi?1≥2。设一个子序列的价值为其包含的每个字符的价值之和(

a?~?z?分别为1~26)。

求?s?的松散子序列中的最大价值。

【输入格式】

输入一行包含一个字符串?s?。

【输出格式】

输出一行包含一个整数表示答案。

【样例输入】

azaazaz

【样例输出】

78

思路与代码

题目说的很绕,但其实就是dp问题。

用闫式dp分析法。

状态表示:f[i][0],不选字符串s的第i个字符时的价值;f[i][1],选字符串s的第i个字符时的价值。

属性:max,因为要求价值最大

状态计算:因为有pi-pi-1=2的限制,所以f[i][1]=max(f[i-2][1],f[i-2][0]),只能从隔了

文档评论(0)

如此醉 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档