第十六届蓝桥杯模拟赛(第一期)-Python

news2024/12/18 14:54:24

本次模拟赛我认为涉及到的知识点:

  • 分解质因数

  • Python的datetime库

  • 位运算

  • 简单dp

1、填空题

【问题描述】

如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。

请问 2024 有多少个质因数。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

(1)思路:分解质因数,这里的代码是暴力最笨写出来的,如果是编程题请移步下面链接。

  • 分解质因数的原理讲解,超详细,点这里->质因子分解

  • 分解质因数代码与详细推理讲解->分解质因数

(2)代码:

res=0
for n in range(2,2025):
    flag = 1
    if 2024%n==0:
        for x in range(2,n):
            if n%x==0:#说明除了1和它本身外还有约数,则不是质数
                flag=0
                break
        if flag==1:
            res+=1
print(res)

(3)答案:3


2、填空题

【问题描述】

对于一个整数 n ,我们定义一次开根变换会将 n 变为开根号后的整数部分。即变为平方和不超过 n 的数中的最大数。

例如,20 经过开根变换将变为 4 ,如果再经过一次开根变换将变为 2 ,如果再经过一次开根变换将变为 1 。

请问,2024经过多少次开根变换后会变为 1 ?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

(1)思路:暴力

(2)代码:

import math
x=int(math.sqrt(2024))
res=1
while x!=1:
    x=int(math.sqrt(x))
    res+=1
print(res)

(3)答案:4


3、填空题

【问题描述】

小蓝有很多 1x1x1 的小立方体,他可以使用多个立方体拼成更大的立方体。

例如,小蓝可以使用 8 个小立方体拼成一个大立方体,每边都是 2 个。

又如,小蓝可以使用 27 个小立方体拼成一个大立方体,每边都是 3 个。

现在,小蓝有 2024 个小立方体,他想再购买一些小立方体,用于拼一个超大的立方体,要求所有的小立方体都用上,拼成的大立方体每边长度都相等。

请问,小蓝最少需要购买多少个小立方体?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

(1)思路:就是求谁的三次方刚好大于等于2024

          #12*12*12=1728
          #13*13*13=2197
          #2197-2024=173

         蓝桥杯考场可以用计算机哦!

(2)代码:

         无代码

(3)答案:173


4、填空题

【问题描述】

如果一个日期的日期以 1 结尾(1日、11日、21日、31日)且为星期一,则称这个日期为一好日期。

请问从 1901 年 1 月 1 日至 2024 年 12 月 31 日总共有多少个一好日期。

提示:1901 年 1 月 1 日是星期二。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

(1)思路:枚举日期

(2)代码:

from datetime import datetime, timedelta

# 起始日期和结束日期
start = datetime(1901, 1, 1)
end = datetime(2024, 12, 31)

# 统计一好日期
res = 0

# 从开始日期到结束日期遍历
t = start
while t <= end:
    # 只检查以1、11、21、31日结尾的日期
    if t.day % 10 == 1:
        if t.weekday() == 0:  # 0表示星期一
            res += 1
    t += timedelta(days=1)

print(res)

(3)答案:762


5、填空题

【问题描述】

两个数按位异或是指将这两个数转换成二进制后,最低位与最低位异或作为结果的最低位,次低位与次低位异或作为结果的次低位,以此类推。

例如,3 与 5 按位异或值为 6 。

小蓝有以下 30 个整数:

9226, 4690, 4873, 1285, 4624, 1596, 6982, 590, 8806, 121, 8399, 8526, 5426, 64, 9655, 7705, 3929, 3588, 7397, 8020, 1311, 5676, 3469, 2325, 1226, 8203, 9524, 3648, 5278, 8647.

小蓝想找一个整数 V ,使得 V 与这 30 个数分别异或后,得到的 30 个数的平方和最小。请问平方和最小是多少?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

(1)思路:

  • v肯定不超过这30个整数的最大数

  • 暴力即可

  • 异或运算

(2)代码:

numbers = [
    9226, 4690, 4873, 1285, 4624, 1596, 6982, 590,
    8806, 121, 8399, 8526, 5426, 64, 9655, 7705,
    3929, 3588, 7397, 8020, 1311, 5676, 3469, 2325,
    1226, 8203, 9524, 3648, 5278, 8647
]

smin=float('inf')#初始化和为无穷大
best_v=0
for v in range(max(numbers)+1):
    s=sum((num ^ v) ** 2 for num in numbers)#异或运算‘^’
    if s<smin:
        smin=s
        best_v=v


print("最小平方和:", smin)
print("最佳V值:", best_v)#这个不用输出

(3)答案:1070293541


6、编程题

【问题描述】

小蓝在一个停车场停车。

停车场的收费规则为:每 15 分钟收费 2 元,不满 15 分钟的不收费。

小蓝总共停车 n 分钟,请问收费总额是多少?

【输入格式】

输入一行包含一个整数 n ,表示小蓝停车的时长。

【输出格式】

输出一行包含一个整数,表示停车费用。

【样例输入】

150

【样例输出】

20

【样例输入】

2024

【样例输出】

268

【评测用例规模与约定】

对于所有评测用例,1 <= n <= 10000。

(1)思路:

  • 整除15再乘2就好了

(2)代码:

n=int(input())
print(n//15*2)

7、编程题

【问题描述】

小蓝有一个整数 n ,每次操作,可以将这个整数的每个非零数位减少 1 。

请问经过多少次操作,这个数会变为 0 。

例如,整数 2024 经过一次操作变为 1013,再经过一次操作变为 2 (即0002),再经过两次操作变为 0 ,总共经过 4 次变换变为 0 。

【输入格式】

输入一行包含一个整数 n 。

【输出格式】

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

【样例输入】

2024

【样例输出】

4

【评测用例规模与约定】

对于 50% 评测用例,1 <= n < 10000。

对于所有评测用例,1 <= n < 1000000000。

(1)思路:

  • 答案就是最大的那个位的数

(2)代码:

n=int(input())
kmax=0
while n!=0:
    k=n%10
    kmax=max(kmax,k)
    n=n//10
print(kmax)

 8、编程题

【问题描述】

小蓝有一个减法式子,形如 a-b,其中 a 和 b 都是非负整数(不保证结果非负)。

请编程处理这个式子,输出运算结果。

【输入格式】

输入一行包含一个减法表达式,式子中仅含数字字符和一个减号。

【输出格式】

输出一行包含一个整数,表示运算结果。

【样例输入】

2024-1949

【样例输出】

75

【样例输入】

20-24

【样例输出】

-4

【评测用例规模与约定】

对于 50% 的评测用例,减法中的两个数都是不超过 10000 的非负整数。

对于所有评测用例,减法中的两个数都是不超过 1000000000 的非负整数。

(1)思路:

  • 就很水的题

(2)代码:

a,b=map(int,input().split('-'))
print(a-b)

9、编程题

【问题描述】

小蓝有一个长度为 n 的整数数列 a[1], a[2], ..., a[n] 。

对于一个给点的整数 k ,小蓝想找到相邻间隔为 1 的 k 个数 a[p], a[p+2], a[p+4], ..., a[p+2k-2],使得他们的和最大。其中 1 <= p <= n-2k+2。

给定数列和 k ,请问给出最大的和。

【输入格式】

输入的第一行包含一个整数 n 。

第二行包含 n 个整数,相邻数之间使用一个空格分隔,依次表示 a[1], a[2], ..., a[n] 。

第三行包含一个整数 k 。

【输出格式】

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

【样例输入】

10
2 1 4 7 4 8 3 6 4 7
2

【样例输出】

15

【样例说明】

取 p=4,a[4]+a[6]=7+8=15 最大。

【评测用例规模与约定】

对于 30% 的评测用例,1 <= k <= n <= 100 , 1 <= a[i] <= 10000 。

对于 60% 的评测用例,1 <= k <= n <= 3000 , 1 <= a[i] <= 10000 。

对于所有评测用例,1 <= k <= n <= 100000 , 1 <= a[i] <= 1000000 。

(1)思路:

  • 首先求出从数组下标1开始,往后k个奇数下标位置的和与偶数下标位置的和。

  • 接着以长度为k个数,向后滑动,每移动一个,让和减去最前面的数,加上最后面的新进来的数。

(2)代码:

#一开始以为要前缀和,发现没必要,因为只有一组输入
n=int(input())
a=list(map(int,input().split(' ')))
k=int(input())
a=[0]+a     #让下标从1开始,方便理解
ji_sum=0#奇数下标的和
ou_sum=0#偶数下标的和
for p in range(1,2*k,2):
    ji_sum+=a[p]
    ou_sum+=a[p+1]
sum1_max=ji_sum
sum2_max=ou_sum
for p in range(3,n-2*k+2+1):
    if p%2==1:#奇数下标
        ji_sum-=a[p-2]
        ji_sum+=a[p+2*k-2]
        sum1_max=max(sum1_max,ji_sum)
    else:#偶数下标
        ou_sum-=a[p-2]
        ou_sum+=a[p+2*k-2]
        sum2_max=max(ou_sum,sum2_max)
print(max(sum1_max,sum2_max))

10、编程题

【问题描述】

小蓝有一个长度为 n 的整数序列 a[1], a[2], ..., a[n] 。

他希望从中找出一个最长的子序列,形成一个勾的形状(√)。

即找到 1 <= p[1] < p[2] < ... < p[k] <= n,满足 a[p[1]] > a[p[2]] > a[p[3]] > ... > a[p[x]] < a[p[x+1]] < ... < a[p[k]] 。其中 k 是子序列的长度,x 是勾中最小的位置。目标是使得 k 最大。

请找出最大的勾的长度。

【输入格式】

输入的第一行包含一个整数 n 。

第二行包含 n 个整数,相邻数之间使用一个空格分隔,依次表示 a[1], a[2], ..., a[n] 。

【输出格式】

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

【样例输入】

10
2 1 4 7 4 8 3 6 4 7

【样例输出】

5

【样例说明】

当 p = (4,5,7,9,10) 时,a[4] , a[5] , a[7] , a[9] , a[10] 可形成一个长度为 5 的勾:7,4,3,6,7。

【评测用例规模与约定】

对于 30% 的评测用例,1 <= n <= 20 , 1 <= a[i] <= 100 。

对于 60% 的评测用例,1 <= n <= 100 , 1 <= a[i] <= 1000 。

对于所有评测用例,1 <= n <= 1000 , 1 <= a[i] <= 10000 。

(1)思路:

  • 简单动态规划

  • 使用两个数组 decreasing 和 increasing。decreasing[i] 表示以 a[i] 结尾的最长严格递减子序列的长度。increasing[i] 表示以 a[i] 开头的最长严格递增子序列的长度。

  • 遍历每个元素 i,并对比它之前的所有元素 j。如果 a[j] > a[i],则更新 decreasing[i] 为 decreasing[j] + 1,表示以 j 结尾的子序列可以延续到 i。

  • 反向遍历每个元素 i,对比之后的所有元素 j。如果 a[j] > a[i],则更新 increasing[i] 为 increasing[j] + 1,表示以 j 结尾的子序列可以从 i 开始。

  • 遍历每个元素 i,检查其对应的递减和递增子序列长度,如果两者都大于 1,则可以组成一个“勾”,并更新最大长度 max_length。

(2)代码:

n = int(input())
a = list(map(int, input().split()))
if n < 3:
    print(0)
else:
    decreasing = [1] * n
    increasing = [1] * n

    # 计算每个位置之前的最长递减子序列
    for i in range(n):
        for j in range(i):
            if a[j] > a[i]:
                decreasing[i] = max(decreasing[i], decreasing[j] + 1)

    # 计算每个位置之后的最长递增子序列
    for i in range(n - 1, -1, -1):
        for j in range(i + 1, n):
            if a[j] > a[i]:
                increasing[i] = max(increasing[i], increasing[j] + 1)

    max_length = 0
    for i in range(n):
        if decreasing[i] > 1 and increasing[i] > 1:
            max_length = max(max_length, decreasing[i] + increasing[i] - 1)

    print(max_length)



如有错误,感谢指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2261643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB2021B APP seriallist 串口通信

文章目录 前言一、项目需要二、使用步骤1.查找串口填写到查找列表2.发送函数3. 接收函数4.检测串口按钮5.选择串口号 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面…

OpenShift 4 - 多云管理(2) - 配置多集群观察功能

《OpenShift / RHEL / DevSecOps 汇总目录》 本文在 OpenShift 4.17 RHACM 2.12 环境中进行验证。 文章目录 多集群观察技术架构安装多集群观察功能监控多集群的运行状态监控多集群的应用运行在被管集群监控应用运行在管理集群监控被管集群的应用运行 参考 多集群观察技术架构…

AMBA-CHI协议详解(十二)

AMBA-CHI协议详解&#xff08;一&#xff09;- Introduction AMBA-CHI协议详解&#xff08;二&#xff09;- Channel fields / Read transactions AMBA-CHI协议详解&#xff08;三&#xff09;- Write transactions AMBA-CHI协议详解&#xff08;四&#xff09;- Other transac…

【win10+RAGFlow+Ollama】搭建本地大模型助手(教程+源码)

一、RAGFlow简介 RAGFlow是一个基于对文档深入理解的开源RAG&#xff08;Retrieval-augmented Generation&#xff0c;检索增强生成&#xff09;引擎。 主要作用&#xff1a; 让用户创建自有知识库&#xff0c;根据设定的参数对知识库中的文件进行切块处理&#xff0c;用户向大…

Android中坐标体系知识超详细讲解

说来说去都不如画图示意简单易懂啊&#xff01;&#xff01;&#xff01;真是的&#xff01; 来吧先上张图&#xff01; &#xff08;一&#xff09;首先明确一下android 中的坐标系统&#xff1a; 屏幕的左上角是坐标系统原点&#xff08;0,0&#xff09; 原点向右延伸是X轴正…

IO的进阶

目录 1. 字符流转向字节流的桥梁1.1 OutputStreamWriter1.2 InputStreamReader1.3 编码与解码1.4 常见编码方式1.5 编码与解码的注意事项 2.Properties2.1概述2.2 Properties 的常用方法2.3 Properties 的应用场景2.4 实例 3.序列化3.1 ObjectOutputStream 4.字符编码4.1 ASCII…

【计算机网络】期末考试预习复习|中

作业讲解 转发器、网桥、路由器和网关(4-6) 作为中间设备&#xff0c;转发器、网桥、路由器和网关有何区别&#xff1f; (1) 物理层使用的中间设备叫做转发器(repeater)。 (2) 数据链路层使用的中间设备叫做网桥或桥接器(bridge)。 (3) 网络层使用的中间设备叫做路…

Edge Scdn用起来怎么样?

Edge Scdn&#xff1a;提升网站安全与性能的最佳选择 在当今互联网高速发展的时代&#xff0c;各种网络攻击层出不穷&#xff0c;特别是针对网站的DDoS攻击威胁&#xff0c;几乎每个行业都可能成为目标。为了确保网站的安全性与稳定性&#xff0c;越来越多的企业开始关注Edge …

UE4_控件蓝图_制作3D生命血条

一&#xff1a;效果图如下&#xff1a; 二、实现步骤&#xff1a; 1、新建敌人 右键蓝图类 选择角色&#xff0c; 重命名为BP_Enemytest。 双击打开&#xff0c;配置敌人网格体 修改位置及朝向 效果如下&#xff1a; 选择合适的动画蓝图类&#xff1a; 人物就有了动作&#x…

厦门凯酷全科技有限公司引领电商营销新风尚

在当今数字化经济快速发展的背景下&#xff0c;抖音作为领先的短视频和直播平台&#xff0c;已成为品牌推广和产品销售的重要渠道。厦门凯酷全科技有限公司&#xff08;以下简称“凯酷全”&#xff09;凭借其专业的团队和丰富的经验&#xff0c;专注于为客户提供高质量的抖音电…

高扬程潜水泵:大流量与高效率的完美结合|深圳鼎跃

洪水是由暴雨、风暴潮等等自然因素引起的江河湖海水量迅速增加或水位迅猛上涨的水流现象。一旦发生洪水事件&#xff0c;会侵袭河道沿岸的城市、农田等场景&#xff0c;在低洼地区容易形成积水&#xff0c;不仅影响人们的生活&#xff0c;还存在一定的安全风险。 高扬程潜水泵是…

神经网络基础-神经网络搭建和参数计算

文章目录 1.构建神经网络2. 神经网络的优缺点 1.构建神经网络 在 pytorch 中定义深度神经网络其实就是层堆叠的过程&#xff0c;继承自nn.Module&#xff0c;实现两个方法&#xff1a; __init__方法中定义网络中的层结构&#xff0c;主要是全连接层&#xff0c;并进行初始化。…

web网页前后端交互方式

参考该文&#xff0c; 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单&#xff0c;设置method属性定义发送表单数据的方式是get还是post。 如使用get方式&#xff0c;则提交的数据会在url中显示&#xff1b;如使用post方式&#xff0c;提交…

Mac配置 Node镜像源的时候报错解决办法

在Mac电脑中配置国内镜像源的时候报错,提示权限问题,无法写入配置文件。本文提供解决方法,青测有效。 一、原因分析 遇到的错误是由于 .npm 目录下的文件被 root 用户所拥有,导致当前用户无法写入相关配置文件。 二、解决办法 在终端输入以下命令,输入管理员密码即可。 su…

Linux实操篇-远程登录/Vim/开机重启

目录 传送门前言一、远程登录1、概念2、ifconfig3、实战3.1、SSH&#xff08;Secure Shell&#xff09;3.2、VNC&#xff08;Virtual Network Computing&#xff09;3.3、RDP&#xff08;Remote Desktop Protocol&#xff09;3.4、Telnet&#xff08;不推荐&#xff09;3.5、FT…

【C/C++进阶】CMake学习笔记

本篇文章包含的内容 一、CMake简介二、使用CMake构建工程2.1 一个最简单的CMake脚本2.2 使用变量和宏2.3 文件搜索 三、使用CMake制作和使用库文件3.1 静态库和动态库3.2 字符串操作3.3 CMake制作库文件3.4 CMake使用库文件3.4.1 使用link_libraries链接3.4.2 使用target_link_…

JS 生成防篡改水印

网页中有水印的需求&#xff0c;今天我们实现手写一个防篡改水印&#xff0c;先看下效果图&#xff1a; 一、创建class函数 传递一个dom为水印包裹器&#xff0c;有一些监听防篡改的observer&#xff0c;然后实例化的时候创建水印&#xff0c;执行create()方法 class WaterMa…

概率论得学习和整理26:EXCEL 关于plot 折线图--频度折线图的一些细节

目录 0 折线图有很多 1 频度折线图 1.1 直接用原始数据做的频度折线图 2 将原始数据生成数据透视表 3 这样可以做出了&#xff0c;频度plot 4 做按某字段汇总&#xff0c;成为累计plot分布 5 修改上面显示效果&#xff0c;做成百分比累计plot频度分布 0 折线图有很多 这…

实现echart大屏动画效果及全屏布局错乱解决方式

如何实现echarts动画效果?如何实现表格或多个垂直布局的柱状图自动滚动效果?如何解决tooltip位置超出屏幕问题,如何解决legend文字过长,布局错乱问题?如何处理饼图的中心图片永远居中? 本文将主要解决以上问题,如有错漏,请指正. 一、大屏动画效果 这里的动画效果主要指&…

pytest入门九:feature

fixture是pytest特有的功能&#xff0c;用以在测试执行前和执行后进行必要的准备和清理工作。使用pytest.fixture标识&#xff0c;定义在函数前面。在你编写测试函数的时候&#xff0c;你可以将此函数名称做为传入参数&#xff0c;pytest将会以依赖注入方式&#xff0c;将该函数…