2023年12月GESP Python五级编程题真题解析
【五级编程题1】
【试题名称】:小杨的幸运数
【问题描述】
小杨认为,所有大于等于a的完全平方数都是他的超级幸运数。
小杨还认为,所有超级幸运数的倍数都是他的幸运数。自然地,小杨的所有超级幸运数也都是幸运数。
对于一个非幸运数,小杨规定,可以将它一直+1,直到它变成一个幸运数。我们把这个过程叫做幸运化。例如,如果a=4,那么4是最小的幸运数,而1不是,但我们可以连续对1做3次+1操作,使其变为4,所以我们可以说,1幸运化后的结果是4。
现在,小样给出N个数,请你首先判断它们是不是幸运数;接着,对于非幸运数,请你将它们幸运化。
【输入描述】
第一行2个正整数a, N。
接下来 行,每行一个正整数 ,表示需要判断(幸运化)的数。
【输出描述】
输出N行,对于每个给定的x,如果它是幸运数,请输出“lucky”,否则请输出将其幸运化后的结果。
【数据规模】
对于30%的测试点,保证a,x≤100,N≤100。
对于60%的测试点,保证a,x≤10⁶。
对于所有测试点,保证a≤1,000,001;保证N≤2×10⁵;保证1≤x≤1,000,001。
【分析】
方法一
如x>=a,判是否是完全平方数或完全平方数的倍数,输出“lukey”。如 int(x⁰·⁵)= x⁰·⁵ 则为完全平方数,在Python中x**0.5//1比int(x**0.5)快3倍左右;x不是完全平方数,则完全平方数的倍数个数不超过x⁰·⁵,如是整数倍数,则求商是否是完全平方数?
对小于a或不是完全平方数或倍数的,则需要加1至大于等于a,直到是完全平方数或完全平方数的倍数,输出该数。
搜索2个完全平方数的次数不超过2001(2001*2001-2000*2000),找完全平方数倍数不超过x⁰·⁵
时间复杂度:O(n(x⁰·⁵+2001)),约2×10⁵×(1001+2001)≤6.1×10⁸,应该不会超时。
【完整代码】
a, n = [int(i) for i in input().split()] # 输入a和n
def p_square(n): # 判完全平方数或其倍数if n**0.5 == n**0.5//1:return Trueelse:for i in range(2,int(x**0.5)+1): # 倍数不超过int(x**0.5)if x // i == x / i and (x//i)**0.5 == (x//i)**0.5//1:return Trueelse:return False
for i in range(n): # 循环输入并处理n个数x = int(input()) # 输入xtf = Falseif x >= a:if p_square(x): # 如果是完全平方数或其倍数print('lucky') # 输出lucky tf = Trueif not tf: # 如果是则需要加1while True:x += 1if x >= a:if p_square(x): # 直到是完全平方数或其倍数print(x) # 输出该数break
【运行结果】

方法二
先建完全平方数和其倍数表(简称lucky表),将可能的数值范围内的完全平方数和其倍数纳入表中,如直接从表的x位置(索引)中找到的数=x,则输出“lucky”,否则输出该数。
因为题目给出a≤1,000,001,N≤2×10⁵,x≤1,000,001,所以最大的完全平方数不超过1001*1001,故先生成1001*1001+1元素为0的列表,在1~1001的平方大于等于a的位置填上平方数(lucky数),并在其倍数位置填上相应倍数值(lucky数)。对于0值用后面与其最接近的lucky数填充。输了直接用x作为索引查询,如x作为索引的值是x,则a是lucky数,输出“lucky”,否则输出x作为索引的值。
时间复杂度:小于O(4x),主要用于建表,1001×1001+1001×2001+2×10⁵<3.3×10⁶。
【完整代码】
a, n = [int(i) for i in input().split()] # 输入a和n
max_ly = 1001 * 1001 # 最大的lucky数不超过此数,x≤1000001
nr_ly = [0 for i in range(max_ly + 1)] # 生成max_ly+1个元素为0的列表
for i in range(1, int(max_ly**0.5)+1):if i*i >= a: # 大于等于a的完全平方数元素位置填入此数nr_ly[i*i] = i*ifor j in range(i*i + i*i, max_ly, i*i): # 其倍数元素位置也填入其倍数nr_ly[j] = j
for i in range(max_ly, 0, -1): # 两个lucky数之间最近的lucky数是后面的数if not nr_ly[i]: # 如i是lucky数则有值,否则为0nr_ly[i] = nr_ly[i + 1] # 0值则填入其后面的数(最接近的lucky数)
for i in range(n): # 输入n个xx = int(input()) # 输入xif nr_ly[x] == x: # 如果x是lucky数输出“lucky”print("lucky")else:print(nr_ly[x]) # 否则输出最接近的lucky数(即x+1至lucky数)
【运行结果】

【五级编程题2】
【试题名称】:烹饪问题
【问题描述】
有N种食材,编号从0至N-1,其中第i种食材的美味度为ai。
不同食材之间的组合可能产生奇妙的化学反应。具体来说,如果两种食材的美味度分别为x和y,那么它们的契合度为x and y。
其中,and运算为按位与运算,需要先将两个运算数转换为二进制,然后在高位补足 ,再逐位进行与运算。例如,12与6的二进制表示分别为1100和0110,将它们逐位进行与运算,得到0100,转换为十进制得到4,因此12 and 6 = 4。在 C++ 或 Python 中,可以直接使用 & 运算符表示与运算。
现在,请你找到契合度最高的两种食材,并输出它们的契合度。
【输入描述】
第一行一个整数N,表示食材的种数。
接下来一行N个用空格隔开的整数,依次为a0,…, aN-1,表示各种食材的美味度。
【输出描述】
输出一行一个整数,表示最高的契合度。
【数据规模】
对40%的测试点保证N≤1,000。
对所有测试点保证N≤10⁶,0≤ai≤2,147,483,647(2³¹-1)。
【分析】
方法一
由于0≤ai≤2,147,483,647,所以(ai & aj)i≠j≥0,因此结果最大值的初值可定义为0。因为ai & aj = aj & ai,先取第1个与其它N-1个数进行按位与运算,如大于结果就赋给结果(求两数按位与的最大值),再取第2个与其后N-2个数进行按位与运算,如大于结果就赋给结果(求两数按位与的最大值),以此类推,直到所有数据都计算并比较大小。此解法时间复杂度为O(N²),可以解决40%多的数据,当N≥10⁴就可能超时。
【完整代码】
n = int(input()) # 输入n
a = [int(i) for i in input().split()] # 输入n个食材的美味度
ans = 0 # 初值为0
for i in range(n-1): # 0≤i<n-1for j in range(i+1,n): # i+1≤j<nif a[i] & a[j] > ans: # a的下标为1~n-1ans = a[i] & a[j] # ans为两种食材的美味度的最大值
print(ans) # 输出结果
【运行结果】

方法二
因为ai≤2,147,483,647(2³¹-1),最多31位二进制,从最高位开始枚举,时间复杂度O(31N),可以解决所有数据,不超时。
【完整代码】
n = int(input()) # 输入n
a = [int(i) for i in input().split()] # 输入n个食材的美味度
ans = 0
for i in range(30,-1,-1): # 从最高位开始枚举ans += 2**i # 加上当前二进制位为1cnt = 0 # 统计数量for j in range(n): # 遍历所有数if (ans & a[j] == ans):cnt += 1if cnt < 2: # 两个以下ans -= 2**i # 这一位为0(原加1,现减去1)
print(ans) # 输出结果
【运行结果】

相关文章:
2023年12月GESP Python五级编程题真题解析
【五级编程题1】 【试题名称】:小杨的幸运数 【问题描述】 小杨认为,所有大于等于a的完全平方数都是他的超级幸运数。 小杨还认为,所有超级幸运数的倍数都是他的幸运数。自然地,小杨的所有超级幸运数也都是幸运数。 对于一个…...
探索Apache Commons Imaging处理图像
第1章:引言 大家好,我是小黑,咱们今天来聊聊图像处理。在这个数字化日益增长的时代,图像处理已经成为了一个不可或缺的技能。不论是社交媒体上的照片编辑,还是专业领域的图像分析,图像处理无处不在。而作为…...
【11】ES6:async/await
一、概念 async/await 是 ES2017(ES8)的新特性,它是一种基于 Promise 实现的异步编程方式。async/await 也是一种语法糖。 1、async/await 实现了用同步方式来写异步代码(promise是链式调用形式写异步代码) 2、asyn…...
深入理解Java集合框架
导语: Java集合框架是Java提供的一组用于管理对象的类和接口,它是Java编程中非常重要的一部分。Java集合框架通过提供诸如List、Set、Map等数据结构,为程序员提供了一种方便、高效的管理对象的方式。本文将深入理解Java集合框架,包…...
极智嘉加快出海发展步伐,可靠产品方案获客户认可
2023年,国内本土企业加快出海征程,不少企业在出海发展中表现出了优越的集团实力与创新的产品优势,有力彰显了我国先进的科技研发实力。作为全球仓储机器人引领者,极智嘉(Geek)也在不断加快出海发展步伐&…...
运动目标检测方法的概述
目录 ① 光流法 ② 帧差法 ③ 背景差分法 ④ 混合高斯模型法 ⑤ 总结 运动目标检测技术的应用十分的广泛,尤其是在智能视频监控领域。运动目标检测为后续的图像处理等操作提供了基础,在某种程度上,决定了整个系统的性能。运动目标检测&a…...
【Qt-Edit】
Qt编程指南 ■ QTextEdit■ QLineEdit■ QLineEdit 设置正则表达式■ QPlainTextEdit■ QKeySequenceEdit■ QList<QLineEdit *> edits■■■ QTextEdit /* 实例和对象,设置位置和显示大小 */ textEdit = new QTextEdit(this)...
vue data变量不能以“_”开头,否则会产生很多怪异问题
1、 比如给子组件赋值,子组件无法得到这个值(也不是一直无法得到,设置后this.$forceUpdate() 居然可以得到), 更无法watch到 <zizujian :config"_config1"> </zizujian>this._config1 { ...…...
解释RestFUL API,以及如何使用它构建web程序
RESTful API(Representational State Transfer)是一种基于网络的软件架构风格,用于构建分布式系统。它利用 HTTP 协议中的各种方法(如 GET、POST、PUT、DELETE)来对资源进行操作,使得不同应用程序能够相互通…...
文件下载输出zip文件
文件下载输出成zip文件: 1、前端整个按钮,调js方法:(参数:param,需要下载的id,用逗号拼接) var param "?dto.id";//需要自己拼接param window.location.href "<%basePat…...
构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践
作者:柳下 概述 随着企业规模和数据量的增长,数据的价值越来越受到重视。数据的变化和更新变得更加频繁和复杂,因此及时捕获和处理这些变化变得至关重要。为了满足这一需求,数据库 CDC(Change Data Captureÿ…...
鸿蒙开发(二)- 鸿蒙DevEco3.X开发环境搭建
上篇说到,鸿蒙开发目前势头旺盛,头部大厂正在如火如荼地进行着,华为也对外宣称已经跟多个厂商达成合作。目前看来,对于前端或客户端开发人员来说,掌握下鸿蒙开发还是有些必要性的。如果你之前是从事Android开发的&…...
Openslide安装
文章目录 安装open-slide python下载openslide二进制文件解压到Anaconda的library目录下配置环境变量在py文件中添加以下语句即可 官网链接 安装open-slide python 表面上这样就可以导入了但事实上会遇到 Couldn’t locate OpendSlide DLL的问题,openslide必须独立安…...
【ES】Elasticsearch常见问题与解决(持续更新)
目录 Elasticsearch常见问题 1. 集群健康问题 2. 性能问题 3. 映射问题 4. 分片问题 5. 内存问题 6. 硬件问题 7. 配置问题 8. 安全问题 9. 网络问题 10. 版本不兼容 Elasticsearch日常使用小结 【Q】离线告警,有IP已离线 【Q】统计某个应用的某个索引…...
2023.12.29 Python面向对象 封装_继承_多台
目录 1.封装-私有与公开权限 2.继承 2.1多继承 2.2继承多层传递 2.3重写父类方法 2.4继承链 2.5禁止私有继承 3.多态 4.总结 1.封装-私有与公开权限 公开属性、公开方法:随便调用 私有属性、私有方法: 只能在类定义的内部调用 以两个下划线开头__的…...
通过自然语言处理增强推荐系统:协同方法
一、介绍 自然语言处理 (NLP) 是人工智能的一个分支,专注于使机器能够以有意义且有用的方式理解、解释和响应人类语言。它包含一系列技术,包括情感分析、语言翻译和聊天机器人。 另一方面,推荐系统(RecSys)是旨在向用户…...
大创项目推荐 深度学习OCR中文识别 - opencv python
文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习OCR中文识别系统 ** 该项目较为新颖,适合作为竞赛课题方向,…...
Python经典游戏 唤醒你童年记忆
这些游戏你玩过几个? 1.贪吃蛇2.吃豆人3.加农炮4.四子棋5. Fly Bird<font color #f3704ab>6.记忆:数字对拼图游戏(欢迎挑战!用时:2min)7.乒乓球8.上课划水必备-井字游戏(我敢说100%的人都…...
什么是骨传导耳机?骨传导能保护听力吗?
骨传导耳机是一种非常特殊的蓝牙耳机,它通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机,它不通过空气传送声音,而是通过头骨的振动来传送声音。 并且骨传导耳机能够在一定程度上起到保护听力的作用,主要是因为它们不…...
使用electron属性实现保存图片并获取图片的磁盘路径
在普通的网页开发中,JavaScript由于安全性的考虑,通常是无法直接获取到客户端的磁盘路径的。浏览器出于隐私和安全原因对此类信息进行了限制。 在浏览器环境下,JavaScript主要通过Web APIs来与浏览器进行交互,而这些API通常受到浏…...
Fooocus:5分钟快速上手的AI图像生成完整指南,免费离线使用
Fooocus:5分钟快速上手的AI图像生成完整指南,免费离线使用 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus 在AI图像生成技术快速发展的今天,Fooocus作为一款…...
Keil C51开发避坑指南:用指针和_at_关键字精准操作RAM/ROM地址
Keil C51内存操作实战:指针与_at_关键字的深度解析与避坑策略 第一次接触Keil C51的存储空间管理时,我对着编译器的报错信息发呆了整整一个下午——为什么这段在标准C里运行良好的指针代码,在51单片机上却频繁引发硬件异常?直到亲…...
Intel RealSense D435i 标定实战:从工具安装到VINS配置全流程解析
1. 准备工作:认识D435i与标定原理 第一次拿到Intel RealSense D435i时,我盯着这个火柴盒大小的设备看了半天——它凭什么能实现三维感知?拆开包装后发现,这玩意儿居然集成了双目红外相机、RGB彩色相机和IMU惯性测量单元。但问题来…...
5分钟搞定!iperf3 Windows版:专业网络性能测试工具完全指南
5分钟搞定!iperf3 Windows版:专业网络性能测试工具完全指南 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 你是否曾经怀疑过…...
Unitree GO2 ROS2 SDK完整指南:5步实现四足机器人智能控制与自主导航
Unitree GO2 ROS2 SDK完整指南:5步实现四足机器人智能控制与自主导航 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk Unitree GO2 ROS2 SDK为四足机器人…...
避开这些坑!在Quartus中设计硬布线CPU时,我的控制器和PC模块是如何调试的
硬布线CPU调试实战:从BEQ失效到波形分析的深度排错指南 当你在Quartus中完成单周期CPU的数据通路搭建,满心欢喜点击仿真按钮时,最令人崩溃的莫过于看到BEQ指令毫无反应、存储器读写数据错乱、或者PC计数器像脱缰野马般失去控制。这些看似简单…...
Go语言服务网格流量管理:熔断与限流
Go语言服务网格流量管理:熔断与限流 1. 熔断器模式 熔断器防止级联故障,提高系统可用性。 package meshimport ("sync""time" )type CircuitBreaker struct {mu sync.RWMutexstate CircuitStatefailureCount intma…...
每日 AI 研究简报 · 2026-05-10
(本文借助 AI 大模型及工具辅助整理) 一句话总结:Anthropic 新架构让模型「做梦」反思、MoE 专家池共享设计突破线性增长假设、AI Agent 工具栈开源井喷——今天的信号指向「模块化」与「可组合性」。 🌊 AI 动态与趋势 本周技…...
写了三年CRUD我觉得自己废了,直到产品经理说了一句话
2024年秋天,我在工位上改一个按钮的颜色。从#1890FF改成#4096FF,产品经理说原来的颜色「太老气了」。改完之后,我盯着屏幕发了十分钟的呆。不是因为这个需求有多难,而是我突然意识到,这是我今天写的第四个CSS微调了。上…...
IMMACULATE框架:黑盒LLM服务的可验证审计技术
1. IMMACULATE框架解析:如何实现黑盒LLM服务的可验证审计在当今AI服务生态中,大型语言模型(LLM)正越来越多地以黑盒API的形式提供商业服务。用户支付费用获取文本生成能力,却无法验证服务商是否如约提供了承诺的模型质量和计算资源。这种信息…...
