蓝桥杯备战 每日训练3道 真题解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 蓝桥杯备战 每日训练3道 真题解析

真题训练(填空题):>>考察对datetime模块的使用


image.png


解析附在代码中 答案8879

import datetime
start,end=datetime.date(2000,1,1),datetime.date(2020,10,1)
#datetime.date(year,month,day)
delta=datetime.timedelta(days=1)
# datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
#参数可选,默认为0
ans=0
while start<=end:
    if start.weekday()==0 or start.day==1:
        ans+=2
    #datetime.date(year,month,day).weekday()返回0-6对应周一至周日
    #datetime.date().day表示表示几号
    else:
        ans+=1
    start+=delta
print(ans)



真题训练(填空题):>>考察简单的数学逻辑 答案为761

image.png



两种解法:1:暴力作图法  把蛇形斜着看 就是一个标准的金字塔 把它打印出来 直接找


image.png


由于宽度限制 两条线将交于761这一点  金字塔代码如下 :

#枚举前50斜行
n=[]
for i in range(1,50):
    max=int(i*(i+1)/2)
    if i%2==1:
        tmp=[i for i in range(max-i+1,max+1)]#奇数行顺序 偶数行逆序
    else:
        tmp=[i for i in range(max-i+1,max+1)][::-1]
    n.append(tmp)
for i in n:
    s=''
    for j in i:
        s=s+str(j)+' '#连接每行
    print(s.center(150))#居中


解法2:数学递推

以对角线为研究对象,观察对角线上的每个元素


我们会发现 每一斜行以对角线上的元素对称(左右元素个数相等)


且 斜行是公差为1的等差数列 容易想到 对角线上的元素等于斜行两端的数字之和/2


如(4+6)/2=5,(11+15)/2=13....所以现在问题就是20行20列的元素处于哪一斜行,斜行两端数字是多少?解决第一个问题:观察容易知道,对角线上元素分布的斜行有以下特征:1,3,5,7....即第n个元素出现在第2n-1个斜行 故20行20列元素出现在第39斜行


解决第二个问题:两端元素如何确定。由于每个斜行都是单增的 观察易得 第n斜行的最大值为(1+n)n/2 故第39斜行最大元素为780 由于第39斜行是公差为1的等差数列,中间元素(对角线)不难求得 答案为761


真题训练 编程题: >>考察贡献度计算及记录最近出现的操作




image.png


先说记录最近出现的操作的含义:初始化,我们定义abcd..z字母首次都出现在字符串S的索引-1处,last_index=[-1 for i in range(26)] 遍历字符串S (for j in len(S)-1) 当访问到某个字母时 记录此时字母对应的索引 j,作为下一次访问到该字母时的‘最近出现的地方’,其次 last_index的索引(这里不是指索引对应的值)对应字母,0——a,1——b,依次类推,所以需要用到ord函数,将其转化为ascci码值


然后是贡献度的问题:每个字符都在一些子串中有所贡献(要求在子串中只出现一次该字符),将每个字符 有所贡献的字符串数量相加,等效于将所有子串中的互异字符求和。


这里可能有点不太好理解,给出数学证明方便理解:如果子串x 如果有3个互异字符abc 说明a对x贡献了1 b对x贡献了1 c对x贡献了1 余下23个字母对x 没有贡献;

下面记函数F(α,β)为字母α对字符串β的贡献值 所以对于任意一个确定的字符串,(函数f的映射规则如题意所示) f(x)=F(a,x)+F(b,x)...+F(z,x)

最后对所有子串对应的f(x)求和 即为answer

记所有子串为x1,x2,x3...xn

所以answer=f(x1)+f(x2)+....+f(xn)

=F(a,x1)+F(b,x1)...+F(z,xn)+f(x)+F(a,x2)+F(b,x2)...+F(z,xn)+...F(a,xn)+F(b,xn)...+F(z,xn)

=[F(a,x1)+F(a,x2)...+F(a,xn)]+[F(b,x1)+F(b,x2)...+F(b,xn)]+...[F(z,x1)+F(z,x2)...+F(z,xn)]

                                                                                                               证毕


#贡献值法 统计每个字符对答案的增量
S=input()
last_index=[-1 for i in range(26)]#last_index[i]用于记录字母最近出现的位置
c=[0 for _ in range(len(S))]
for j in range(len(S)):
    x=ord(S[j])-ord('a')
    later=len(S) if S[j+1:].find(S[j])==-1 else S[j+1:].find(S[j])+j+1
    c[j]=(later-j)*(j-last_index[x])
    last_index[x]=j
print(sum(c))

我是小郑 正在奔赴热爱 奔赴山海!


目录
相关文章
|
uml
【软考备战·希赛网每日一练】2023年4月26日
数据耦合:一组模块借助参数表传递简单数据。 公共耦合:多个模块都访问同一个公共数据环境。 外部耦合:一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息。 内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。
58 0
|
设计模式 Linux 测试技术
【软考备战·希赛网每日一练】2023年5月4日
多模光纤 的特点:成本低、宽芯线、聚光好、耗散大、低效,用于 低速度、短距离 的通信。 单模光纤 的特点:成本高、窄芯线、需要激光源、耗散小、高效、用于 高速度、长距离 的通信。
49 0
|
存储 算法
【软考备战·希赛网每日一练】2023年4月25日
关于委托开发:有合同约定,著作权归委托方;而在合同中未约定著作权归属,归创作方。 I/O设备管理软件 层次,从上到下依次为:用户层软件(用户进程)、设备独立性软件(与设备无关的系统软件)、设备驱动程序、硬件。
54 0
|
网络协议 持续交付
【软考备战·希赛网每日一练】2023年4月14日
具有 最优子结构 特点的问题可以使用 动态规划法 进行求解。 计算m数组中每项的值,需要三层for循环(循环变量依次为i,j,k),所以 时间复杂度为O(n3)。 需要 二维数组m 来进行记录数据,所以 空间复杂度为O(n2)。 最后一空直接计算每个选项的相乘次数,相乘次数最少得即为答案。
65 0
|
开发框架 .NET
【软考备战·希赛网每日一练】2023年5月10日
中断方式 中CPU需要在得到通知后,保存现场,然后再转入I/O中断服务程序的执行,完成与I/O系统的数据交换,然后再返回被打断的程序继续执行。其过程中需要执行若干条指令才能处理一次中断时间,这种方式无法满足高速的批量数据传送要求。
75 0
|
测试技术 数据库 数据安全/隐私保护
【软考备战·希赛网每日一练】2023年5月9日
(A1,A3)或(A1,A2)没有保持函数依赖A1A3->A2; 同时(A1,A3)或(A1,A2)没有保持函数依赖A2->A3。所以 不保持函数依赖。
38 0
|
自然语言处理 安全 测试技术
【软考备战·希赛网每日一练】2023年5月2日
序列图(顺序图)用于展现系统中一个用例和多个对象的行为。 MIME 是一个互联网标准,扩展了电子邮件标准,与安全无关;S/MIME(安全多用途互联网邮件扩展协议)与安全电子邮件相关。
81 0
|
编解码 网络协议 uml
【软考备战·希赛网每日一练】2023年4月13日
文章目录 一、今日成绩 二、错题总结 第一题 第二题 第三题 第四题 第五题 三、知识查缺
87 0
|
编译器
【软考备战·希赛网每日一练】2023年4月12日
文章目录 一、今日成绩 二、错题总结 第一题 三、知识查缺
131 0
|
算法 API C++
蓝桥杯历年真题分类汇总(史上最全版本,一定不要错过)
蓝桥杯历年真题分类汇总(史上最全版本,一定不要错过)
蓝桥杯历年真题分类汇总(史上最全版本,一定不要错过)