当前位置: 首页 > article >正文

蓝桥杯 国赛2024python(b组)题目(1-3)

第一题

试卷答题页 - 蓝桥云课

问题描述

在今年蓝桥杯的决赛中,一共有 1010 道题目,每道题目的分数依次为 55 分,55 分,1010 分,1010 分,1515 分,1515 分,2020 分,2020 分,2525 分,2525 分。

假设某位参赛选手在解答每一道题时,要么能得到该题的全部分数,要么就得 00 分。那么请问,这位参赛选手在完成这 1010 道题之后,所能获得的总分值存在多少种不同的情况?

注意,总分值仅需关注选手 1010 道题的总得分,而无需关注具体是由哪些题获得了相应的分数。例如,选手第一道题获得 55 分其余题均为 00 分,与第二道题获得 55 分其余题均为 0 分,应视为同一种情况。

答案提交

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

暴力法 

# 题目分数列表
scores = [5, 5, 10, 10, 15, 15, 20, 20, 25, 25]# 存储所有可能的总分(允许重复)
all_total = []# 遍历所有可能的答题组合
# 第1题:0=不选,1=选
for q1 in [0, 1]:# 第2题:0=不选,1=选for q2 in [0, 1]:# 第3题:0=不选,1=选for q3 in [0, 1]:# 第4题:0=不选,1=选for q4 in [0, 1]:# 第5题:0=不选,1=选for q5 in [0, 1]:# 第6题:0=不选,1=选for q6 in [0, 1]:# 第7题:0=不选,1=选for q7 in [0, 1]:# 第8题:0=不选,1=选for q8 in [0, 1]:# 第9题:0=不选,1=选for q9 in [0, 1]:# 第10题:0=不选,1=选for q10 in [0, 1]:# 计算当前组合的总分total = (q1 * scores[0] +q2 * scores[1] +q3 * scores[2] +q4 * scores[3] +q5 * scores[4] +q6 * scores[5] +q7 * scores[6] +q8 * scores[7] +q9 * scores[8] +q10 * scores[9])# 将总分添加到列表中all_total.append(total)# 转换为集合去重,统计不同总分的数量
unique_total = set(all_total)
print(len(unique_total))

 

借助位运算 

# 每道题的分数列表
scores = [5, 5, 10, 10, 15, 15, 20, 20, 25, 25]# 初始化集合用于存储所有可能的总分(集合自动去重)
possible_scores = set()# 使用位运算枚举所有可能的答题组合(2^10 = 1024种)
for combination in range(1 << 10):  # 等价于2**10,使用位移运算更高效total_score = 0# 检查每道题是否答对(二进制位为1)for question_idx in range(10):if combination & (1 << question_idx):  # 判断第question_idx位是否为1total_score += scores[question_idx]# 将当前组合的总分加入集合possible_scores.add(total_score)# 输出不同总分的数量
print(len(possible_scores))
  1. 外层循环 for combination in range(1 << 10)

    • 1 << 10 表示 2^10(即 1024),生成从 0 到 1023 的整数。
    • 每个整数 combination 对应一个二进制数(如 3 对应 0000000011,表示前两题答对)。
  2. 内层循环 for question_idx in range(10)

    • 遍历每道题(question_idx 从 0 到 9),检查当前组合中该题是否答对。
  3. 关键判断 if combination & (1 << question_idx)

    • 1 << question_idx 生成一个只有第 question_idx 位为 1 的二进制数(如 question_idx=2 时为 0000000100)。
    • combination & ... 通过按位与运算检查 combination 的第 question_idx 位是否为 1
      • 若为 1,说明该题答对,累加分数。
      • 若为 0,说明答错,不加分。

 

动态规划法

scores=[5,5,10,10,15,15,20,20,25,25]
dp={0}
for score in scores:sums=set()for s in dp:new_score= s+scoresums.add(new_score)dp.update(sums)
print(dp)
print(len(dp))
  1. 暴力枚举法:通过 10 层嵌套循环遍历每道题的选或不选状态,计算所有组合的总分。这种方法直观但代码冗长,时间复杂度为 O (2^10)。

  2. 动态规划法:使用集合动态维护当前所有可能的总分值,每次处理一道题时扩展集合。这种方法代码简洁,时间复杂度为 O (N*M),其中 N 是题目数量,M 是可能的总分值数目。

 

第二题

试卷答题页 - 蓝桥云课


问题描述

若一个正整数 n 满足 整除 2024!,即 2024!除以  的余数为 0,则称 n 为“儿童数”。

现在,请你计算在区间 [1,∞] 内一共有多少个“儿童数”。

答案提交

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

我们需要计算所有满足 n^61​ 整除 2024!​ 的正整数 n​ 的个数。即:


 

  1. 素因子分解

    • 遍历 1​ 到 2024​ 的所有整数,对每个整数进行素因子分解。
    • 使用 ​Counter​ 统计所有素数的总指数 vp​(2024!)​。
  2. 计算满足条件的 n​ 的个数

    • 对于每个素数 p​,ap​​ 的取值范围为:
       

       

    • 因此,每个素数 p​ 有  种选择。
    • 所有素数的选择数相乘即为满足条件的 n​ 的总数。
from collections import Counterdef prime_factor(x):i = 2while i * i <= x:if x % i == 0:d[i] += 1x //= ielse:i += 1if x > 1:d[x] += 1d = Counter()
for i in range(1, 2025):prime_factor(i)res = 1
for v in d.values():res *= (v // 61 + 1)  print(res)

解题思路详解:计算满足 n^61∣2024!​ 的正整数 n​ 的数量

1. 问题转化:从整除条件到素因子指数约束

根据唯一分解定理,任何正整数 n​ 都可以表示为素数的幂次乘积:

因此,n^61​ 的素因子分解为:

 

题目要求 n61​ 整除 2024!​,即:

其中 vp​(2024!)​ 是素数 p​ 在 2024!​ 中的指数。由此可得:

2. 计算素因子指数:Legendre 公式

对于素数 p​,2024!​ 中 p​ 的指数 vp​(2024!)​ 可通过 Legendre 公式 计算:

示例计算(以 p=2​ 为例):

3. 组合计数:每个素数的指数选择

对于每个素数 p≤2024​:

  • 指数 ap​​ 的取值范围为

  • 共有 种选择。

由于不同素数的选择相互独立,根据乘法原理,满足条件的 n​ 的总数为:

4. 关键说明

  • 素数范围:只需考虑 p≤2024​,因为 p>2024​ 时 ​,此时 ap​​ 必须为 0(贡献乘数 1)。

  • 边界情况:若 vp​(2024!)<61​,则 ⌊61vp​​⌋=0​,此时 ap​​ 只能为 0(仍贡献乘数 1)。

# 第一步:判断一个数是否为素数(试除法)
def is_prime(num):if num < 2:return False  # 0和1不是素数for i in range(2, num):if num % i == 0:return False  # 能被整除,不是素数return True  # 不能被整除,是素数# 第二步:生成所有小于等于n的素数列表
def get_primes(n):primes = []for num in range(2, n + 1):if is_prime(num):primes.append(num)return primes# 第三步:计算n!中素数p的指数(Legendre公式)
def get_exponent(n, p):exponent = 0current = nwhile current > 0:current = current // p  # 整除操作exponent += currentreturn exponent# 主程序
max_number = 2024  # 题目中的2024!
primes = get_primes(max_number)  # 获取所有<=2024的素数result = 1
for p in primes:# 计算2024!中素数p的指数exponent = get_exponent(max_number, p)# 计算n中p的最大可能指数 a = exponent // 61a = exponent // 61# 每个素数的指数a有(a+1)种选择(0到a)result *= (a + 1)print(result)  # 输出结果

第三题

0球衣号码 - 蓝桥云课


问题描述

在篮球之都,有一支传奇的篮球队,名为“坤之队”。这支球队由 n 位才华横溢的球员组成,编号分别为 1,2,…,n。

今年,坤之队共参加了 m 场激烈的比赛。

在每场比赛前,坤之队的教练阿坤都会举行一个出征仪式。他会指定其中一名球员为队长,并将其球衣的号码设为 0。同时,为了保持队员之间的秩序和团结,教练还会对其他球员的球衣号码进行调整。具体来说,站在被指定球员右边的每个球员的球衣号码将比他左边球员的球衣号码大 1,而站在左边的每个球员的球衣号码将比他右边球员的球衣号码大 1。

举个例子,假设坤之队有 n=5 名球员,阿坤在一场比赛前指定编号为 3 的球员为队长,那么球员们球衣的号码就会变为 [2,1,0,1,2]。

经过 m 轮比赛的激烈角逐后,阿坤希望你能帮助他确定,每个球员所拥有过的最大球衣号码是多少。

输入格式

第一行包含两个正整数 n 和 m,表示球员数量和比赛场次数。

第二行包含 m 个整数 p1,p2,…,pm,表示每场比赛前被指定为队长的球员的编号。

输出格式

输出一行,包含 n 个整数,表示每个球员所拥有过的最大球衣编号。

n, m = map(int, input().split())
positions = list(map(int, input().split()))
result = [0] * n  # 存储每个球员的最大球衣号码for p in positions:captain = p  # 队长位置(1-based)for i in range(n):player = i + 1  # 球员位置(1-based,i是0-based索引)distance = abs(captain - player)  # 计算距离(即球衣号码)if distance > result[i]:result[i] = distance  # 更新最大值print(' '.join(map(str, result)))

每个球员的最大球衣号码取决于所有比赛中距离队长位置的最大距离。而这个最大距离可以通过分析所有队长位置的最小值和最大值来快速确定。

具体来说,对于任意球员位置 i,其最大球衣号码为以下两者中的较大值:

  • 该球员到所有比赛中最左侧队长位置的距离
  • 该球员到所有比赛中最右侧队长位置的距离

这是因为最左侧和最右侧的队长位置能够产生最大的距离差,覆盖所有可能的情况。

n, m = map(int, input().split())
positions = list(map(int, input().split()))# 初始化结果数组,每个元素初始为0
result = [0] * n# 找出所有操作位置中的最小值和最大值(转换为0-based索引)
min_pos = min(positions) - 1  # 最小操作位置
max_pos = max(positions) - 1  # 最大操作位置# 对于每个关键位置(最小和最大操作位置)
for critical_pos in [min_pos, max_pos]:# 计算每个位置到关键位置的距离,并更新最大值for i in range(n):distance = abs(critical_pos - i)if distance > result[i]:result[i] = distanceprint(*result)
暴力解法优化解法
逐次处理每场比赛
每次指定队长后,遍历所有球员,实时计算每个球员的当前距离,并更新最大值。
核心逻辑:每次操作独立计算,无状态复用。
利用全局极值
先找出所有队长位置的最小值 min_p 和最大值 max_p,然后对每个球员,仅计算与这两个极值的距离,取最大值作为最终结果。
核心逻辑:最大值由边界位置决定,无需逐次计算。
举例
若有 100 场比赛指定队长位置,需重复 100 次遍历所有球员的操作。
举例
无论多少场比赛,只需计算两次距离(与min_pmax_p),复杂度与比赛次数无关。

 

相关文章:

蓝桥杯 国赛2024python(b组)题目(1-3)

第一题 试卷答题页 - 蓝桥云课 问题描述 在今年蓝桥杯的决赛中&#xff0c;一共有 1010 道题目&#xff0c;每道题目的分数依次为 55 分&#xff0c;55 分&#xff0c;1010 分&#xff0c;1010 分&#xff0c;1515 分&#xff0c;1515 分&#xff0c;2020 分&#xff0c;2020 分…...

低代码平台前端页面表格字段绑定与后端数据传输交互主要有哪些方式?华为云Astro在这方面有哪些方式?

目录 🔧 一、低代码平台中常见的数据绑定与交互方式 1. 接口绑定(API 调用) 2. 数据源绑定(DataSource) 3. 变量中转(临时变量 / 页面状态) 4. 数据模型绑定(模型驱动) 🌐 二、华为云 Astro 轻应用的实现方式 ✅ 1. 数据源绑定(API服务+API网关) ✅ 2. 变…...

stm32——UART和USART

串口通信协议UART和USART 1. UART与USART协议详解 特性UART (Universal Asynchronous Receiver/Transmitter)USART (Universal Synchronous Asynchronous Receiver/Transmitter)全称通用异步收发器通用同步/异步收发器同步/异步异步&#xff1a;不共享时钟&#xff0c;数据通过…...

算法题(165):汉诺塔问题

审题&#xff1a; 本题需要我们找到最优的汉诺塔搬法然后将移动路径输出 思路&#xff1a; 方法一&#xff1a;递归 我们先分析题目 n为2的情况&#xff0c;我们先将第一个盘子移动到三号柱子上&#xff0c;然后再将二号盘子移动到二号柱子上 n为3的情况&#xff0c;我们先将前…...

玄机——某次行业攻防应急响应(带镜像)

今天给大家带来一次攻防实战演练复现的过程。 文章目录 简介靶机简介1.根据流量包分析首个进行扫描攻击的IP是2.根据流量包分析第二个扫描攻击的IP和漏扫工具&#xff0c;以flag{x.x.x.x&工具名}3.提交频繁爆破密钥的IP及爆破次数&#xff0c;以flag{ip&次数}提交4. 提…...

低代码逻辑引擎配置化实战:三步穿透审批记录查询

在堆积如山的报销单中埋头寻找某笔特殊费用的审批轨迹在跨部门协作时被追问"这个合同到底卡在哪个环节" 在快节奏的办公自动化场景中&#xff0c;这些场景是很常见的&#xff0c;传统OA系统中分散的审批记录查询方式往往太繁琐。 为破解这一痛点&#xff0c;在JVS低…...

深入理解React Hooks的原理与实践

深入理解React Hooks的原理与实践 引言 React Hooks 自 2018 年 React 16.8 发布以来&#xff0c;彻底改变了前端开发者的编码方式。它通过函数式组件提供了状态管理和生命周期等功能&#xff0c;取代了传统的类组件&#xff0c;使得代码更加简洁、复用性更强。然而&#xff…...

WEB3技术重要吗,还是可有可无?

我从几个角度给你一个全面、理性、技术导向的回答&#xff1a; ✅ 一、Web3 技术的重要性&#xff1a;“有意义&#xff0c;但不是万能” Web3 技术并不是可有可无的噱头&#xff0c;而是一种在特定场景下提供独特价值的技术体系。 它重要的原因包括&#xff1a; 1. 重构数字…...

Python 隐藏法宝:双下划线 _ _Dunder_ _

你可能不知道&#xff0c;Python里那些用双下划线包裹的"魔法方法"(Dunder方法)&#xff0c;其实是提升代码质量的绝佳工具。但有趣的是&#xff0c;很多经验丰富的开发者对这些方法也只是一知半解。 先说句公道话&#xff1a; 这其实情有可原。因为在多数情况下&am…...

《视觉SLAM十四讲》自用笔记 第三讲:三维空间刚体运动

第三讲 三维空间刚体运动 3.0 目标 1.理解三维空间的刚体运动描述方式&#xff1a;旋转矩阵、变换矩阵、四元数和欧拉角。 2.掌握 Eigen 库的矩阵、几何模块使用方法。 3.1 旋转矩阵 3.1.1 点和向量&#xff0c;坐标系 三维空间中&#xff0c;刚体的运动可以用两个概念来…...

【Zephyr 系列 15】构建企业级 BLE 模块通用框架:驱动 + 事件 + 状态机 + 低功耗全栈设计

🧠关键词:Zephyr、BLE 模块、架构设计、驱动封装、事件机制、状态机、低功耗、可维护框架 📌面向读者:希望将 BLE 项目从“Demo 工程”升级为“企业可复用框架”的研发人员与技术负责人 📊预计字数:5500+ 字 🧭 前言:从 Demo 到产品化,架构该如何升级? 多数 BLE…...

Docker构建Vite项目内存溢出:从Heap Limit报错到完美解决的剖析

问题现象:诡异的"消失的index.html" 最近在CI/CD流水线中遇到诡异现象:使用Docker构建Vite项目时,dist目录中缺少关键的index.html文件,但本地构建完全正常。报错截图显示关键信息: FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out…...

Linux运维新人自用笔记(乌班图apt命令和dpkg命令、两系统指令区别,rpm解决路径依赖、免安装配置java环境)

内容全为个人理解和自查资料梳理&#xff0c;欢迎各位大神指点&#xff01; 每天学习较为零散。 day17 一、Ubuntu apt命令和dpkg命令 二进制命令配置文件数据文件&#xff0c;打包好的单个文件 Windows &#xff1a;.exe macos&#xff1a;.dmg 后缀适用系统安装方式.d…...

vm+ubuntu24.04扩展磁盘

vmubuntu24.04扩展磁盘 $ lsblk $ sudo fdisk -l 1.修复 GPT 表警告 $ sudo parted /dev/sda print当询问是否修复时&#xff0c;输入 Fix2.扩展物理分区 /dev/sda3 $ sudo growpart /dev/sda 33.刷新物理卷 (PV) $ sudo pvresize /dev/sda3检查可用的扩展空间. $ sudo vgd…...

Python爬虫-爬取各省份各年份高考分数线数据,进行数据分析

前言 本文是该专栏的第60篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者将基于Python爬虫,爬取各省份历年以来的“各年份高考分数线”进行数据分析。 废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看…...

Android端口转发

如上图所示&#xff0c;有一个Android设备&#xff0c;Android设备里面有主板&#xff0c;主板上有网络接口和Wi-Fi&#xff0c;网络接口通过网线连接了一个网络摄像头&#xff0c;这就跟电脑一样&#xff0c;电脑即可以通过网线接入一个网络&#xff0c;也可以同时用Wi-Fi接入…...

C语言 | C代码编写中的易错点总结

C语言易错点 **1. 指针与内存管理****2. 数组与字符串****3. 未初始化变量****4. 类型转换与溢出****5. 运算符优先级****6. 函数与参数传递****7. 宏定义陷阱****8. 结构体与内存对齐****9. 输入/输出函数****10. 其他常见问题****最佳实践**在C语言编程中,由于其底层特性和灵…...

PHP环境极速搭建

一、为什么选择phpStudy VS Code&#xff1f; 作为一名初次接触PHP的开发者&#xff0c;我深知环境配置往往是学习路上的第一道门槛。传统PHP环境搭建需要手动配置Apache/Nginx、PHP解释器、MySQL等多重组件&#xff0c;光是处理版本兼容性和依赖问题就可能耗费半天时间——这…...

建造者模式深度解析与实战应用

作者简介 我是摘星&#xff0c;一名全栈开发者&#xff0c;专注 Java后端开发、AI工程化 与 云计算架构 领域&#xff0c;擅长Python技术栈。热衷于探索前沿技术&#xff0c;包括大模型应用、云原生解决方案及自动化工具开发。日常深耕技术实践&#xff0c;乐于分享实战经验与…...

代码中文抽取工具并替换工具(以ts为例)

文章目录 基本思路目录结构配置文件AST解析替换代码中文生成Excel启动脚本 基本思路 通过对应语言的AST解析出中文相关信息&#xff08;文件、所在行列等&#xff09;存到临时文件通过相关信息&#xff0c;逐个文件位置替换掉中文基于临时文件&#xff0c;通过py脚本生成Excel…...

pgsql batch insert optimization (reWriteBatchedInserts )

reWriteBatchedInserts 是 PostgreSQL JDBC 驱动 提供的一个优化选项&#xff0c;它可以 重写批量插入语句&#xff0c;从而提高插入性能。 作用 当 reWriteBatchedInsertstrue 时&#xff0c;PostgreSQL JDBC 驱动会将 多个单独的 INSERT 语句 转换为 一个多行 INSERT 语句&a…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(上)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

华为云Flexus+DeepSeek征文 | 基于DeepSeek-V3构建企业知识库问答机器人实战

作者简介 我是摘星&#xff0c;一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型&#xff0c;将实际使用经验分享给大家&#xff0c;希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 作者简介 1. 引言 2. 技术选型与架构设计 2.1 技…...

【Docker 01】Docker 简介

&#x1f308; 一、虚拟化、容器化 ⭐ 1. 什么是虚拟化、容器化 物理机&#xff1a;真实存在的服务器 / 计算机&#xff0c;对于虚拟机来说&#xff0c;物理机为虚拟机提供了硬件环境。虚拟化&#xff1a;通过虚拟化技术将一台计算机虚拟为 1 ~ n 台逻辑计算机。在一台计算机…...

信息最大化(Information Maximization)

信息最大化在目标域无标签的域自适应任务中&#xff0c;它迫使模型在没有真实标签的情况下&#xff0c;对未标记数据产生高置信度且类别均衡的预测。此外&#xff0c;这些预测也可以作为伪标签用于自训练。 例如&#xff0c;在目标域没有标签时&#xff0c;信息最大化损失可以…...

整数的字典序怎么算

在Python中&#xff0c;字典序&#xff08;lexicographical order&#xff09;通常指的是按照字符串的字典顺序进行比较或排序。对于整数来说&#xff0c;字典序可以理解为将整数转换为字符串后进行比较的顺序。 计算整数的字典序 要计算整数的字典序&#xff0c;可以按照以下…...

知识拓展卡————————关于Access、Trunk、Hybrid端口

目录 什么是Trunk List、VLAN ID、PVID&#xff1a; VLAN ID&#xff08;Virtual Local Area Network Identifier&#xff09;&#xff1a; Trunk List&#xff08;Trunk列表&#xff09;&#xff1a; PVID&#xff08;Prot VLAN ID&#xff09;: 关于Native VLAN &#x…...

AUTOSAR实战教程--DoIP_02_诊断链路建立流程

第一步&#xff1a;DoIP实体车辆声明/诊断仪车辆识别请求 打开激活线以后&#xff0c;DoIP实体发的三帧车辆声明报文。其中包含了DoIP实体的诊断逻辑地址&#xff08;可以类比DoCAN的物理请求/响应地址&#xff09;&#xff0c;对应车辆的VIN码&#xff08;若已配置&#xff0…...

音频剪辑软件少之又少好用

我们平时见到的图片以及视频编辑工具非常多&#xff0c;但是音频剪辑软件却是少之又少&#xff0c;更不用说有没有好用的&#xff0c;今天&#xff0c;给大家带来一款非常专业的音频剪辑软件&#xff0c;而且是会员喔。 软件简介 一款手机号登录即可以享受会员的超专业音频剪…...

客户端和服务器已成功建立 TCP 连接【输出解析】

文章目录 图片**1. 连接状态解析****第一条记录&#xff08;服务器监听&#xff09;****第二条记录&#xff08;客户端 → 服务器&#xff09;****第三条记录&#xff08;服务器 → 客户端&#xff09;** **2. 关键概念澄清****(1) 0.0.0.0 的含义****(2) 端口号的分配规则** *…...