python模拟练习第一期
问题一
如果一个数 p 是个质数,同时又是整数 a的约数,则 p 称为 a的一个质因数。
请问 2024 有多少个质因数?
步骤 1: 分解 2024
首先,2024 是偶数,说明可以被 2 整除。我们从 2 开始进行除法分解:
2024÷2=1012
1012÷2=506
506÷2=253
253 不是偶数,所以它不能再被 2 整除。我们接下来检查 253 能否被 3 整除。因为 253 各位数字之和 2+5+3=10,10 不能被 3 整除,因此 253 不能被 3 整除。
接下来检查 253 能否被 5 整除,253 末尾不是 0 或 5,所以不能被 5 整除。
然后检查 253 能否被 11 整除。计算 253 除以 11:
253÷11=23
所以,253 可以被 11 整除,商为 23。23 是一个质数,无法再分解。
步骤 2: 质因数分解
通过以上步骤,我们可以得出 2024 的质因数分解:
2024=23×11×232024=23×11×23
步骤 3: 质因数的个数
质因数包括 2、11 和 23。因此,2024 的质因数有 3 个,分别是 2、11 和 23。
答案:
2024 的质因数有 3 个。
问题二
对于一个整数 n ,我们定义一次开根变换会将 n 变为开根号后的整数部分。即变为平方和不超过 n 的数中的最大数。
例如,20 经过开根变换将变为 4 ,如果再经过一次开根变换将变为 2 ,如果再经过一次开根变换将变为 1 。
请问,2024经过多少次开根变换后会变为 1 ?
初始值为 2024。
第一次开根变换:2024≈45.0112024≈45.011,取整数部分为 45。
第二次开根变换:45≈6.70845≈6.708,取整数部分为 6。
第三次开根变换:6≈2.4496≈2.449,取整数部分为 2。
第四次开根变换:2≈1.4142≈1.414,取整数部分为 1。
因此,2024经过 4 次开根变换后会变为 1。
代码计算:
import math
def abc(n):c = 0while n > 1:n = math.isqrt(n) c += 1return c
n = 2024
a = abc(n)
print(a)
问题三
小蓝有很多 1x1x1 的小立方体,他可以使用多个立方体拼成更大的立方体。
例如,小蓝可以使用 8 个小立方体拼成一个大立方体,每边都是 2 个。
又如,小蓝可以使用 27 个小立方体拼成一个大立方体,每边都是 3 个。
现在,小蓝有 2024 个小立方体,他想再购买一些小立方体,用于拼一个超大的立方体,要求所有的小立方体都用上,拼成的大立方体每边长度都相等。 请问,小蓝最少需要购买多少个小立方体?
大立方体的体积: 一个边长为 n 的大立方体的体积是 n**3(即 n×n×n)。
目标: 我们需要找到一个 n,使得 n**3≥2024,并且 n**3−2024 是最小的,即最少需要购买的立方体数量。
计算 2024 的立方根,以估计一个接近的 nn。我们可以用计算器计算:
2024≈12.6348
因此,边长 n 至少应该是 13,因为 123=1728小于 2024,而 133=2197 大于 2024。
133=2197 是一个大立方体的体积。
小蓝已经有 2024 个小立方体,所以他需要购买的数量是:
2197−2024=173
代码计算:
n = 2024
i = 13
while i**3 < n:i += 1
x = i**3
a = x - n
print("小蓝最少需要购买的立方体数量:", a)
问题四
如果一个日期的日期以 1 结尾(1日、11日、21日、31日)且为星期一,则称这个日期为一好日期。
请问从 1901 年 1 月 1 日至 2024 年 12 月 31 日总共有多少个一好日期。
提示:1901 年 1 月 1 日是星期二。
确定日期范围: 从 1901 年 1 月 1 日到 2024 年 12 月 31 日。
了解每个月的 "1 日"、"11 日"、"21 日"、"31 日": 这些是以 1 结尾的日期。我们需要检查每个月这些日期是否是星期一。
确定每年的每个月的具体情况: 每年的不同月份中,某些月份的日期可能会出现 31 日,而有些月份(如 2 月、4 月、6 月等)没有 31 日。
确定每个日期是星期几: 利用已知的起始日期(1901 年 1 月 1 日是星期二),我们可以通过计算每个日期的星期几来确定是否是星期一。
代码计算:
import datetime
start_date = datetime.date(1901, 1, 1)
good_dates_count = 0# 遍历从1901年1月1日到2024年12月31日的日期
for year in range(1901, 2025):for month in range(1, 13):# 检查该月的1日、11日、21日、31日(如果有31日)for day in [1, 11, 21]:try:# 创建该日期current_date = datetime.date(year, month, day)# 如果该日期是星期一(星期一对应的数字是0)if current_date.weekday() == 0:good_dates_count += 1except ValueError:# 如果日期无效(如2月30日),则跳过pass# 检查31日是否在该月中有效if month in [1, 3, 5, 7, 8, 10, 12]: # 有31日的月份try:current_date = datetime.date(year, month, 31)if current_date.weekday() == 0:good_dates_count += 1except ValueError:pass
print("一好日期的总数是:", good_dates_count)
问题五
两个数按位异或是指将这两个数转换成二进制后,最低位与最低位异或作为结果的最低位,次低位与次低位异或作为结果的次低位,以此类推。
例如,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.将每个数转换为 16 位二进制数(因为最大数 9655 的二进制表示需要 14 位,可以补充到 16 位来统一处理)。
2.对每一位,统计 30 个数中该位为 1 的数量。
3.如果该位为 1 的数量超过一半(即大多数数在该位上是 1),则选择 V在这一位上为 1,否则为 0。
4.根据得到的 V 计算每个 ai⊕V 的平方和。
代码计算:
nums = [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
]
bit_length = 16
count_ones = [0] * bit_length
for num in nums:for i in range(bit_length):if num & (1 << (bit_length - 1 - i)):count_ones[i] += 1
V = 0
for i in range(bit_length):if count_ones[i] > len(nums) // 2:V |= (1 << (bit_length - 1 - i))
squared_sum = 0
for num in nums:squared_sum += (num ^ V) ** 2
print(f"最小的平方和是: {squared_sum}")
问题六
小蓝在一个停车场停车。
停车场的收费规则为:每 15 分钟收费 2 元,不满 15 分钟的不收费。
小蓝总共停车 n 分钟,请问收费总额是多少?
【输入格式】 输入一行包含一个整数 n ,表示小蓝停车的时长。
【输出格式】 输出一行包含一个整数,表示停车费用。
【样例输入】 150
【样例输出】 20
【样例输入】 2024
【样例输出】 268
我们可以使用整数除法和取余操作来帮助我们确定停车时长的分段数。
可以用 (n + 14) // 15
来计算向上取整的次数。如果 n
不是15的整数倍,就多计一段。
例如:对于 n = 16
,(16 + 14) // 15
的结果是 2
,表示收费2段15分钟。
每段15分钟收费2元,所以最终收费就是 (n + 14) // 15 * 2
。
代码计算
n=int(input())
if(n>=15):b=n//15c=b*2
print(c)
问题七
小蓝有一个整数 n ,每次操作,可以将这个整数的每个非零数位减少 1 。
请问经过多少次操作,这个数会变为 0 。
例如,整数 2024 经过一次操作变为 1013,再经过一次操作变为 2 (即0002),再经过两次操作变为 0 ,总共经过 4 次变换变为 0 。
【输入格式】 输入一行包含一个整数 n 。
【输出格式】 输出一行,包含一个整数,表示答案。
【样例输入】 2024
【样例输出】 4
观察每一位:整数的每一位非零数字在每一次操作中都会减少 1,直到该位数字变成 0。
操作次数:可以通过统计该整数各位的最大值来判断操作次数。因为每一位数字都会在每一次操作中减少 1,所以最终需要进行的操作次数就是这整个数各位最大数字的数量。
代码计算:
def min_operations_to_zero(n):# 转换为字符串,遍历每一位字符digits = str(n)# 找出所有非零数字的最大值max_digit = max(int(d) for d in digits if d != '0')return max_digitn = int(input().strip())print(min_operations_to_zero(n))
问题八
小蓝有一个减法式子,形如 a-b,其中 a 和 b 都是非负整数(不保证结果非负)。
请编程处理这个式子,输出运算结果。
【输入格式】 输入一行包含一个减法表达式,式子中仅含数字字符和一个减号。
【输出格式】 输出一行包含一个整数,表示运算结果。
【样例输入】 2024-1949
【样例输出】 75
【样例输入】 20-24
【样例输出】 -4
输入格式中有一个减法符号 -
,它将两个数字 a
和 b
分开。我们可以利用这个符号来分割输入字符串,从而得到 a
和 b
。
将解析出来的 a
和 b
转换为整数后,直接进行减法运算,得出结果。
代码计算:
e = input().strip()
a, b = e.split('-')
a = int(a)
b = int(b)
print(a - b)
问题九
小蓝有一个长度为 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 最大。
代码计算:
def max_sum(n, a, k):max_sum_value = float('-inf')for p in range(n - 2 * k + 2):current_sum = 0for i in range(k):current_sum += a[p + 2 * i] # a[p], a[p+2], ..., a[p+2k-2]max_sum_value = max(max_sum_value, current_sum)return max_sum_value
n = int(input())
a = list(map(int, input().split()))
k = int(input())
result = max_sum(n, a, k)
print(result)
问题十
小蓝有一个长度为 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。
代码计算:
def longest_hoop(n, a):dec = [1] * ninc = [1] * nfor i in range(1, n):for j in range(i):if a[i] < a[j]:dec[i] = max(dec[i], dec[j] + 1)for i in range(n - 2, -1, -1):for j in range(n - 1, i, -1):if a[i] < a[j]:inc[i] = max(inc[i], inc[j] + 1)# 计算勾的最大长度max_length = 0for i in range(n):if dec[i] > 1 and inc[i] > 1:max_length = max(max_length, dec[i] + inc[i] - 1)return max_lengthn = int(input())
a = list(map(int, input().split()))
print(longest_hoop(n, a))
相关文章:

python模拟练习第一期
问题一 如果一个数 p 是个质数,同时又是整数 a的约数,则 p 称为 a的一个质因数。 请问 2024 有多少个质因数? 步骤 1: 分解 2024 首先,2024 是偶数,说明可以被 2 整除。我们从 2 开始进行除法分解: 202…...

Xcode
info.plist Appearance Light 关闭黑暗模式 Bundle display name 设置app名称,默认为工程名 Location When In Use Usage Description 定位权限一共有3个key 1.Privacy - Location When In Use Usage Description 2.Privacy - Location Always and When In U…...

RabbitMQ安装延迟消息插件(mq报错)
之前启动一个springboot的单体项目,一直mq的错误,即便我更新了最新版本的mq,还是报错。 后来才发现,项目使用了延时队列,是需要单独下载延时插件的。 1如果判断mq有没有延时队列插件【没有x-delayed-message】 2下载…...

es 3期 第15节-词项查询与跨度查询实战运用
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...

iOS Delegate模式
文章目录 一、 Delegate 模式的概念二、Delegate 的实现步骤步骤 1: 定义一个协议(Protocol)步骤 2: 在主类中添加一个 delegate 属性步骤 3: 实现协议的类遵守协议并实现方法步骤 4: 设置 delegate 三、Delegate 模式的特点四、Delegate 模式的常见场景…...

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象
java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象 一、引言二、环境三、待解析的DDL四、解析后的对象结构五、完整的UT类六、控制台输出总结 一、引言 在日常开发中,有些需要对SQL进行解析的场景,比如读取表结构信息,生成文档、…...

React状态管理常见面试题目(一)
1. Redux 如何实现多个组件之间的通信?多个组件使用相同状态时如何进行管理? Redux 实现组件通信 Redux 是一个集中式的状态管理工具,通过共享一个全局 store 来实现多个组件之间的通信。 通信机制: 所有状态保存在 Redux 的全局 store 中。使用 ma…...

jenkins 出现 Jenkins: 403 No valid crumb was included in the request
文章目录 前言解决方式:1.跨站请求为找保护勾选"代理兼容"2.全局变量或者节点上添加环境变量3.(可选)下载插件 the strict Crumb Issuer plugin4.重启 前言 jenkins运行时间长了,经常出现点了好几次才能构建,然后报了Je…...

【前端面试】list转树、拍平, 指标,
这个题目涉及的是将一组具有父子关系的扁平数据转换为树形结构,通常称为“树形结构的构建”问题。类似的题目包括: 1. 组织架构转换 给定一个公司的员工列表,每个员工有 id 和 managerId,其中 managerId 表示该员工的上级。任务…...

游戏引擎学习第43天
仓库 https://gitee.com/mrxiao_com/2d_game 介绍运动方程 今天我们将更进一步,探索运动方程,了解真实世界中的物理,并调整它们,以创建一种让玩家感觉愉悦的控制体验。这并不是在做一个完美的物理模拟,而是找到最有趣…...

NVM:安装配置使用(详细教程)
文章目录 一、简介二、安装 nvm三、配置 nvm 镜像四、配置环境变量五、使用教程5.1 常用命令5.2 具体案例 六、结语 一、简介 在实际的开发和学习中可能会遇到不同项目的 node 版本不同,而出现的兼容性问题。 而 nvm 就可以很好的解决这个问题,它可以在…...

matlab测试ADC动态性能的原理
目录 摘要: 简介: 动态规范和定义 动态规格: 双面到单边的功率谱转换 摘要: 模数转换器(adc)代表了接收器、测试设备和其他电子设备中的模拟世界和数字世界之间的联系。正如本文系列的第1部分中所概述…...

PostgreSQL JSON/JSONB 查询与操作指南
PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作,适用于存储和查询半结构化数据。本文将详细介绍其常用操作。 1. 基础操作 1.1 JSON 属性访问 ->: 返回 JSON 对象中的值,结果为 JSON 格式。 SELECT {"a": {"b": 1…...

【Isaac Lab】Ubuntu22.04安装英伟达驱动
目录 1.1 禁用nouveau驱动 1.2 安装必要的依赖项 1.3 下载安装 1.4 查看是否安装成功 1.5 安装CUDA 1.5.1 下载 1.5.2 按照提示进行下载安装 1.5.3 添加环境变量 1.5.4 测试CUDA是否安装成功 1.1 禁用nouveau驱动 输入以下命令打开blacklist.conf文件 sudo vim /etc…...

JS,递归,处理树形数据组件,模糊查询树形结构数据字段
JS递归如何模糊查询树形结构数据,根据数据中的某一个字段值,模糊匹配 直接拿去使用就行 function filterTreeLabel(arr, label) {let result []arr.forEach((item) > {// if (String(item.POBJECT_NAME).toLowerCase().indexOf(label)!-1) {if (String(item.P…...

神州数码DCME-320 online_list.php 任意文件读取漏洞复现
0x01 产品描述: 神州数码DCME-320是一款高性能多业务路由器,专为多用户、多流量和多业务种类需求设计。它采用了...

nginx的内置变量以及nginx的代理
nginx的内置变量 客户端 命令含义$uri可以获取客户端请求的地址,包含主机和查询的参数$request_uri:获取客户端的请求地址,包含主机和查询参数。$host:请求的主机名,客户端—发送请求的url地址$http_user_agent获取客户端请求的浏览器和操作…...

ubuntu监测硬盘状态
安装smartmontools smartctl -l error /dev/sdk smartctl -i /dev/sda lshw -class disk smartctl -H /dev/sd 结果1: 结果2:PASSED,这表示硬盘健康状态良好 smartctl -a /dev/sdb sdk lsblk blkid 测试写入速度 time dd if/dev/zero of…...

3.2.1.2 汇编版 原子操作 CAS
基本原理说明 在 x86 和 ARM 架构上,原子操作通常利用硬件提供的原子指令来实现,比如 LOCK 前缀(x86)或 LDREX/STREX(ARM)。以下是一些关键的原子操作(例如原子递增和比较交换)的汇…...

InnoDB事务系统(二):事务的实现
事务隔离性由锁来实现。原子性、一致性、持久性通过数据库的 redo log 和 undo log 来完成。 redo log 称为重做日志,用来保证事务的原子性和持久性。undo log 用来保证事务的一致性。 有的 DBA 或许会认为 undo 是 redo 的逆过程,其实不然。redo 和 u…...

xdoj :模式匹配
模式匹配 题目描述: 接收信号中包含特定的信号模式,对接收信号进行检测,以统计特定模式出现的次数。 例如接收信号为 9 3 5 7 5 8 6 3 5 7 1 9 3 5 7,如果特定信号为 3 5 7,则接收信号中包含了 3 个特定模式。通过键…...

Redis的基本使用命令(GET,SET,KEYS,EXISTS,DEL,EXPIRE,TTL,TYPE)
目录 SET GET KEYS EXISTS DEL EXPIRE TTL redis中的过期策略是怎么实现的(面试) 上文介绍reids的安装以及基本概念,本章节主要介绍 Redis的基本使用命令的使用 Redis 是一个基于键值对(KEY - VALUE)存储的…...

LruCache(本地cache)生产环境中遇到的问题及改进
问题:单机qps增加时请求摘要后端,耗时也会增加,因为超过了后端处理能力(最大qps,存在任务堆积)。 版本一 引入LruCache。为了避免数据失效,cache数据的时效性要小于摘要后端物料的更新时间&…...

智慧公交指挥中枢,数据可视化 BI 驾驶舱
随着智慧城市的蓬勃发展,公共交通作为城市运营的核心枢纽,正朝着智能化和数据驱动的方向演进。通过整合 CAN 总线技术(Controller Area Network,控制器局域网总线)、车载智能终端、大数据分析及处理等尖端技术,构建的公交“大脑”…...
【计算机网络】期末考试预习复习|上
作业讲解 物理层作业 共有4个用户进行CDMA通信。这4个用户的码片序列为: A: (–1 –1 –1 1 1 –1 1 1);B: (–1 –1 1 –1 1 1 1 –1) C: (–1 1 –1 1 1 1 –1 –1);D: (–1 1 –1 –1 –1 –1 1 –1) 现收到码片序列:(–1 1 –…...

YOLOv8目标检测(四)_图片推理
YOLOv8目标检测(一)_检测流程梳理:YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集:YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型:YOLOv8目标检测(三)_训…...

AI工具如何深刻改变我们的工作与生活
在当今这个科技日新月异的时代,人工智能(AI)已经从科幻小说中的概念变成了我们日常生活中不可或缺的一部分。从智能家居到自动驾驶汽车,从医疗诊断到金融服务,AI正以惊人的速度重塑着我们的世界。 一、工作方式的革新…...

springboot中——Logback介绍
程序中的日志,是用来记录应用程序的运行信息、状态信息、错误信息等。 Logback基本使用 springboot的依赖自动传递了logback的依赖,所以不用再引入依赖 之后在resources文件下创建logback.xml文件,写入 <?xml version"1.0" …...

【Tomcat】第一站:理解tomcat与Socket
目录 1. Tomcat 1.1 Tomcat帮助启动http服务器。 1.2 tomcat理解: 2. 计算机网络最基本的流程 2.1 信息是怎么来的? 2.2 端口是干什么的? 3. 简单的Socket案例 服务端 客户端 启动: 3.2 在Tomcat发送信息,看…...

TQ15EG开发板教程:使用SSH登录petalinux
本例程在上一章“创建运行petalinux2019.1”基础上进行,本例程将实现使用SSH登录petalinux。 将上一章生成的BOOT.BIN与imag.ub文件放入到SD卡中启动。给开发板插入电源与串口,注意串口插入后会识别出两个串口号,都需要打开,查看串…...