【202609】Python五级
从PDF导入:【202609】Python五级
Python
180分钟
总分 100.0
27 题
试卷题目预览
第1题
中级
2.0分
单选
小杨使用单向链表存放任务序列,同时记录链表的头部结点 head 和尾部结点 tail。链表不为空,已知尾部结点 tail,在链表末尾添加新结点的时间复杂度是( )。

第2题
中级
2.0分
单选
在不带哨兵结点的双向链表中,结点 p 既不是头部结点,也不是尾部结点。删除结点 p 的正确代码是( )。

第3题
中级
2.0分
单选
下面函数使用快慢变量查找单链表的中间结点。横线处应填写( )。

第4题
中级
2.0分
单选
函数 gcd(a, b) 定义如下,则 gcd(105, 45) 的结果是( )。

第5题
中级
2.0分
单选
下面函数用于判断正整数 n 是否为质数。横线处的最佳写法是( )。

第6题
中级
2.0分
单选
下面代码实现线性筛(欧拉筛)。为保证每个合数只被它的最小质因子筛除一次,横线处应填写( )。

第7题
中级
2.0分
单选
根据唯一分解定理,整数 756 的正确质因数分解是( )。
第8题
中级
2.0分
单选
函数 f(n) 定义如下,则 f(4) 的结果是( )。

第9题
中级
2.0分
单选
在升序数组中查找第一个严格大于 x 的元素下标。下面代码横线处应填写( )。

第10题
中级
2.0分
单选
小杨需要把若干箱货物按原顺序分配到 days 天中,每天运输连续的若干箱。求可以完成任务的最小载重量。函数 check(cap) 判断载重量为 cap 时,是否可以在规定天数运完全部货物。横线处应填写( )。

第11题
中级
2.0分
单选
下面是归并排序合并两个有序区间(升序排序)的片段。想要让排序算法保持稳定,横线处应当填写( )。

第12题
中级
2.0分
单选
下面快速排序的划分函数以 a[right] 作为枢轴,把不大于枢轴的元素移动到数组左侧。横线处应填写( )。

第13题
中级
2.0分
单选
小杨要在一间教室安排尽可能多场活动,每场活动拥有开始时间 start 和结束时间 end。使用贪心算法,正确的挑选策略是( )。

第14题
中级
2.0分
单选
下面函数用迭代方式求解最大连续子段和。对于数组 [-2, 3, -1, 5, -6, 2],函数返回结果是( )。

第15题
中级
2.0分
单选
数组 a 和 b 低位在前存储两个非负大整数。代码实现高精度加法,横线处应填写( )。

第16题
中级
2.0分
判断
下面代码,在已知结点 p 的前提下,可以用 O(1) 的时间,在单向链表的 p 结点后面插入新结点 s。

第17题
中级
2.0分
判断
下面代码可以安全删除单向链表的头结点,并让 head 指向删除之后的新头结点。

第18题
中级
2.0分
判断
下面的欧几里得算法,只要 a、b 是正整数,无论 a > b 还是 a < b 都可以正常求出最大公约数。

第19题
中级
2.0分
判断
下面埃氏筛从 i i 开始标记合数,原因是:ii 之前 i 的合数倍数,已经被更小的质因子标记完成。

第20题
中级
2.0分
判断
下面程序的时间复杂度为 O(n)。

第21题
中级
2.0分
判断
数组 a 已经升序排列,下面函数可以返回数组中最后一个小于等于 x 的元素下标;如果不存在该元素,则返回 -1。

第22题
中级
2.0分
判断
快速排序中如果选取区间第一个元素作为枢轴。当输入数组已经升序排列时,其最坏时间复杂度仍为 O(n log n)。
第23题
中级
2.0分
判断
下面归并排序的递推式对应的时间复杂度为 O(n log n)。

第24题
中级
2.0分
判断
下面的贪心代码,对于任意硬币面值集合 coins,都一定可以求出凑出 money 所需要的最少硬币数量。

第25题
中级
2.0分
判断
假设两个非负高精度数分别存储在数组 a 和 b 中,且 a ≥ b。数组采用低位在前的方式存储,即 a[0] 表示个位。下面代码中的 c 可以正确保存 a - b 的各位数字。

第26题
中级
25.0分
编程
哥德巴赫猜想
时间限制:1.0 s
内存限制:512.0 MB
题目描述
众所周知,哥德巴赫猜想是说,任何大于 2 的偶数都能写成两个质数(素数)之和。例如:
4 = 2 + 2
6 = 3 + 3
8 = 3 + 5
10 = 3 + 7 = 5 + 5
聪明的你肯定想知道,对于大于 2 的偶数 n,它有多少种写成两个质数之和的方法。例如 4、6 和 8 都只有一种方法,10 有两种方法。请你编写程序计算这个问题的答案。
在本题中,我们认为两种分解方案不同,当且仅当两种分解方案包含的素数互不相同;即 10 = 3 + 7 和 10 = 7 + 3 是同一种方案,不能重复计数。
【输入格式】
一行,一个大于 2 的偶数 n。
【输出格式】
一行,一个整数,表示将 n 写成两个质数之和的方法数。
输入样例 1:4 输出样例 1:1 输入样例 2:10 输出样例 2:2 数据范围 对于 40% 的测试点,保证 4 ≤ n ≤ 100。 对于所有测试点,保证 4 ≤ n ≤ 10⁶。
第27题
中级
25.0分
编程
饮品调制
时间限制:1.0 s
内存限制:512.0 MB
题目描述
你想调制一份甜度恰到好处的饮品给你的朋友们品尝。
有 n 种原料可供用于调制饮品。第 i 种原料存量 vᵢ 升,每升含有 sᵢ 克糖分。你可以自由选择原料加入饮品,但每种原料的使用量不得超过其剩余存量。也就是说,假设第 i 种原料选用 kᵢ 升,应当有 0 ≤ kᵢ ≤ vᵢ,kᵢ 可以取 0 到 vᵢ 之间的任何数字(包括小数)。
一份甜度恰到好处的饮品需要保证甜度恰好为 t。最终你调制得到的饮品甜度为 (∑ kᵢsᵢ)/(∑ kᵢ)。为了让更多的朋友喝到饮品,请问最多能调制出多少升甜度恰到好处的饮品?如果无法调制出甜度恰到好处的饮品,则认为答案是 0。
【输入格式】
第一行,两个整数 n, t。分别表示原料种类数量,恰到好处的甜度。 接下来 n 行,每行两个整数 vᵢ, sᵢ,分别表示第 i 种原料的存量体积,每升含有的糖分质量。
【输出格式】
一行,一个小数,表示能调制出的甜度恰到好处的饮品最大体积,保留三位小数。
输入样例 1:<img src="/static/uploads/images/f2c187bc7eda.png" style="max-width:35%;border-radius:6px;margin:8px 0;" /> 输出样例 1:<img src="/static/uploads/images/ec1b00578715.png" style="max-width:35%;border-radius:6px;margin:8px 0;" /> 输入样例 2:<img src="/static/uploads/images/169b8d3415b1.png" style="max-width:35%;border-radius:6px;margin:8px 0;" /> 输出样例 2:<img src="/static/uploads/images/69b94df6e99b.png" style="max-width:35%;border-radius:6px;margin:8px 0;" /> 数据范围 对于 40% 的测试点,保证 n = 2。 对于所有测试点,保证 1 ≤ n ≤ 2000,0 ≤ t ≤ 200,1 ≤ vᵢ ≤ 100,0 ≤ sᵢ ≤ 200。



