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

输入格式中有一个减法符号 -,它将两个数字 ab 分开。我们可以利用这个符号来分割输入字符串,从而得到 ab

将解析出来的 ab 转换为整数后,直接进行减法运算,得出结果。

代码计算:

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))

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

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

相关文章

element-plus的el-tree的双向绑定

el-tree改造了下 可选可取消 有默认值 不包含父级id&#xff08;也可打开注释 包含父级id&#xff09; 默认展开 点击节点也可触发选择 节点内容自定义 <template><div class"absolute"><el-scrollbar class"pall"><div class"…

【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(三)

目录 ARC规则 概要 所有权修饰符 __strong修饰符 __weak修饰符 __unsafe_unretained修饰符 __autoreleasing修饰符 ARC规则 概要 “引用计数式内存管理”的本质部分在ARC中并没有改变&#xff0c;ARC只是自动地帮助我们处理“引用计数”的相关部分。 在编译单位上可以…

MySQL-DQL之数据多表操作

文章目录 一. 多表操作1. 表与表之间的关系2. 外键约束3. 创建外键约束表(一对多操作) 二. 多表查询1. 多表查询① 交叉连接查询(基本不会使用-得到的是两个表的乘积) [了解]&#xff08;不要记住&#xff09;② 交集运算&#xff1a;内连接查询(join)③ 差集运算&#xff1a;外…

《经验分享 · 软考系统分析师》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

宝塔面板Linux版本常用命令

宝塔面板&#xff08;BT Panel&#xff09;是一款简单易用的服务器管理工具&#xff0c;广泛应用于Linux服务器的管理。尽管宝塔提供了图形化界面&#xff0c;但在某些情况下&#xff0c;使用命令行操作更加高效。以下是宝塔面板Linux版本常用的命令&#xff0c;包括安装、管理…

ElasticSearch - 理解doc Values与Inverted Index倒排索引

文章目录 概述倒排索引&#xff1a;从图书馆的索引卡片谈起倒排索引的工作原理 docValues&#xff1a;从数据库的列式存储说起docValues的工作原理 docValues与倒排索引的对比两者的联系&#xff1a;组合使用&#xff0c;优化搜索与分析 小结 概述 在使用 Elasticsearch 进行大…

2.【每日算法】

1. NC140 排序 题目连接 快排 #include <vector> class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** 将给定数组排序* param arr int整型vector 待排序的数组* return int整型vector*/v…

Acer宏碁Swift3笔记本S40-20,SF314-56G原厂Win10系统工厂模式安装包,带Recovery恢复还原

适用电脑型号&#xff1a;S40-20、SF314-56、SF314-56G(原装OEM预装系统) 链接&#xff1a;https://pan.baidu.com/s/1q77Br-hcmn9iJraGVVKQ7Q?pwdrw1r 提取码&#xff1a;rw1r Acer宏碁原装出厂windows10系统自带所有驱动、Office办公软件、出厂主题壁纸、系统属性专属联…

人工智能|自然语言处理——机器翻译评价指标Bleu和Rouge

在机器翻译任务中&#xff0c;BLEU 和 ROUGE 是两个常用的评价指标&#xff0c;BLEU 根据精确率(Precision)衡量翻译的质量&#xff0c;而 ROUGE 根据召回率(Recall)衡量翻译的质量 BLEU&#xff08;Bilingual Evaluation Understudy&#xff09;&#xff1a; BLEU是一种用于评…

Python跳动的爱心

系列文章 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…

极验决策引擎如何凭借独特优势,弯道超车传统风控?

前言 市场上的规则决策引擎产品众多&#xff0c;但大多局限于IP、设备、账号等层面&#xff0c;提供的是现成的风控标签和规则。然而&#xff0c;真正的风控&#xff0c;需要的不仅仅是标签和规则。 极验的业务规则决策引擎与众不同&#xff0c;这款决策引擎以界面流程编排为…

windows如何使用ssh连接kali

声明&#xff1a; 昨天晚上看了小羽老师的直播课&#xff0c;心血来潮自己也想搞一下这个ssh&#xff0c;中途安装遇到了不少问题&#xff0c;电脑也是重启了好多次&#xff0c;遇到bug就重启也是解决bug的一种方法. 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&…

SpringMvc完整知识点一

SpringMVC概述 定义 SpringMVC是一种基于Java实现MVC设计模型的轻量级Web框架 MVC设计模型&#xff1a;即将应用程序分为三个主要组件&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;。这种分离…

路由器、二层交换机与三层交换机的区别与应用

路由器、二层交换机和三层交换机是常见的网络设备&#xff0c;常常协同工作。它们都可以转发数据&#xff0c;但在功能、工作层级以及应用场景上存在差异。 1. 工作层级 三者在OSI模型中的工作层级不同&#xff1a; 路由器&#xff1a; 工作在 网络层&#xff08;第三层&#…

Spring Boot 指定外部配置路径

优先级 外部 > 内部 目录结构&#xff1a; conf/… app.jar 启动命令 java -jar --spring.config.locationfile:/conf/ app.jar

(css)element中el-select下拉框整体样式修改

(css)element中el-select下拉框整体样式修改 重点代码&#xff08;颜色可行修改&#xff09; // 修改input默认值颜色 兼容其它主流浏览器 /deep/ input::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.50); } /deep/ input::-moz-input-placeholder {color: rgba…

SEC_ASA 第一天作业

拓扑&#xff1a; 实验需求&#xff1a; 注意&#xff1a;在开始作业之前必须先读“前言”&#xff0c;以免踩坑&#xff01;&#xff01;&#xff01;&#xff08;☞敢点我试试&#xff09; 按照拓扑图配置VLAN连接。 注意&#xff1a;ASA防火墙的 Gi0/1口需要起子接口&#x…

「Mac玩转仓颉内测版45」小学奥数篇8 - 排列组合计算

本篇将通过 Python 和 Cangjie 双语讲解如何计算排列与组合。这道题目旨在让学生学会使用排列组合公式解决实际问题&#xff0c;并加深对数学知识和编程逻辑的理解。 关键词 小学奥数Python Cangjie排列与组合 一、题目描述 编写一个程序&#xff0c;计算从 n 个不同元素中取…

Ungoogled Chromium127编译指南 Windows篇 - 获取源码(七)

1. 引言 在完成所有必要工具的安装和配置后&#xff0c;我们进入了Ungoogled Chromium编译过程的第一个关键阶段&#xff1a;获取源代码。本文将详细介绍如何正确获取和准备Ungoogled Chromium的源代码&#xff0c;为后续的编译工作打下基础。 2. 准备工作 2.1 环境检查 在…

APP、小程序对接聚合广告平台,有哪些广告变现策略?

开发者对接聚合广告平台&#xff0c;可以让自身流量价值最大化&#xff0c;获得更多的广告曝光机会&#xff0c;对接单一的广告联盟容易造成广告填充不足&#xff0c;收益不稳定的问题。#APP广告变现# APP开发者根据应用的生命周期、用户特征和产品定位&#xff0c;选择最适合…