老师已为大家备好电子打印版,需要完整电子版文件的朋友,可以拉到文末查看。 【答案解析】
1.解释:答案选C。
详细解析如下图所示——2.解释:答案选C。
详细解析如下图所示——相关知识点的复习与拓展:
截至考试当年12月,有关归并排序的实现原理,可以参考下面的视频,加深理解—— 关注重播 分享 赞3.解释:答案选D。
详细解析如下图所示——4.解释:本题官方给出的正确答案是选项A,但是存在巨大争议。
详细解析如下图所示——5.解释:答案选B。
详细解析如下图所示——6.解释:答案选A。
详细解析如下图所示——7.解释:答案选C。
详细解析如下图所示——相关知识点的复习与拓展:
截至考试当年3月,有关快速排序的实现原理,可以参考下面的视频帮助理解——
关注重播 分享 赞8.解释:答案选B。
详细解析如下图所示——9.解释:答案选D。
详细解析如下——● 首先看代码逻辑:该递归实现的二分查找,核心是每次将搜索区间折半缩小范围,符合二分查找的定义,因此选项A的描述是正确的。
● 二分查找本身属于典型的分治算法应用:将大的搜索问题拆分为更小的子区间搜索子问题,子问题的结果合并后就是原问题的结果,因此选项B的描述是正确的。
● 代码中 _binarySearch 函数在内部调用了自身,是典型的递归实现方式,因此选项C的描述是正确的。
● 动态规划算法的核心是通过存储子问题的重复计算结果,避免重复求解重叠子问题,该二分查找的实现不存在重叠子问题的求解、也没有状态转移和存储子问题解的逻辑,完全不属于动态规划算法的范畴,因此选项D的描述是错误的,是本题要选出的错误说法。
10.解释:答案选B。
详细解析如下图所示——11.解释:答案选D。
详细解析如下图所示——12.解释:答案选B。
详细解析如下图所示——13.解释:答案选B。
本题考察计算机基础知识。通信卫星可以转发无线电信号,实现通信地球站间或地球站与航天器间的无线电通信,因此具有信号中继作用,选项B正确。
14.解释:答案选C。
详细解析如下图所示——15.解释:答案选B。
详细解析如下——冒泡排序属于交换类排序算法,其核心思想是通过相邻元素之间的比较和交换,逐步将最大或最小元素"冒泡"到序列末尾,最终实现整体有序。在选项中:
A. 希尔排序:属于插入类排序,是插入排序的改进版本,通过分组插入逐步缩小增量,不属于交换类。
B. 快速排序:属于交换类排序算法,其核心思想是通过基准元素划分序列,递归地对左右子序列进行排序,过程中涉及大量元素交换,与冒泡排序同属交换类。
C. 堆排序:属于选择类排序算法,通过堆结构选择最大或最小元素并交换到末尾,不属于交换类。
D. 插入排序:属于插入类排序算法,通过逐步构建有序序列实现排序,与冒泡排序原理不同。
因此,与冒泡排序同属交换类排序算法的是快速排序。选项B正确。
相关知识点的复习与拓展:
截至考试当年12月,有关十大经典排序算法的特点对比,可以参考下图帮助记忆——
【答案解析】
1.解释:正确。 详细解析如下图所示——相关知识点的复习与拓展:
截至考试当年12月,有关十大经典排序算法的特点对比,可以参考下图帮助记忆——
2.解释:错误。(有争议)
因为考纲中对二分法同时列出了"二分查找"和"二分答案(或二分枚举)",本题的官方答案"错误"存在争议。详细解析如下图所示—— 3.解释:错误。 详细解析如下图所示——4.解释:正确。 详细解析如下图所示——5.解释:正确。详细解析如下图所示——6.解释:正确。 详细解析如下图所示——7.解释:错误。 详细解析如下图所示——8.解释:正确。 详细解析如下图所示——9.解释:正确。 详细解析如下图所示——10.解释:正确。 详细解析如下图所示——2023年12月 C++五级 小杨的幸运数
#include<bits/stdc++.h>using namespace std;intmain(){// 关闭cin与stdio同步,加速cin输入速度ios::sync_with_stdio(false);// 解绑cin和cout,cout输出不会强制刷新cin缓冲区,进一步加速输入cin.tie(nullptr);long long a; // 超级幸运数的下界int N; // 待判断的数的个数if (!(cin >> a >> N)) return 0;// 先把所有询问读进来,顺便求最大值,用来确定后面数组要开多大vector<int> x(N);int xmax = 0;for (int i = 0; i < N; i++) {cin >> x[i];if (x[i] > xmax) xmax = x[i];}// 求 i0 = ceil(sqrt(a)),即第一个满足 i*i >= a 的整数 i// s0 = i0 * i0 就是最小的超级幸运数// 这里循环次数最多 1000 次(因为 a <= 1e6),可忽略不计long long i0 = 1;while (i0 * i0 < a) i0++;long long s0 = i0 * i0;// 数组上界:x 幸运化后的结果 <= ceil(x/s0)*s0 <= x + s0 - 1// 所以开到 xmax + s0 就一定能装下所有答案,+5 只是留点余量// 最坏情况:a = 1e6 -> i0 ≈ 1000 -> s0 ≈ 1e6,MAXV ≈ 2e6,内存约 9MB,安全int MAXV = (int)(xmax + s0 + 5);// lucky[v] = 1 表示 v 是幸运数vector<char> lucky(MAXV + 1, 0);// 筛法预处理:枚举每个超级幸运数 s = i * i(要求 i >= i0,即 s >= a),// 把 s 本身以及 s 的所有倍数全部标记为幸运数for (long long i = i0; i * i <= MAXV; i++) {long long s = i * i; // s 是一个超级幸运数for (long long j = s; j <= MAXV; j += s) // 枚举 s 的所有倍数lucky[(int)j] = 1; // 倍数 = 幸运数}// 后缀预处理:nxt[i] = i 及其右边第一个幸运数的位置// 从后往前扫,如果 i 本身不是幸运数,就继承 i+1 的答案// 这样"一直 +1 直到变成幸运数"就变成了一次 O(1) 查表vector<int> nxt(MAXV + 2, -1);for (int i = MAXV; i >= 1; i--)nxt[i] = lucky[i] ? i : nxt[i + 1];// 逐个询问输出for (int i = 0; i < N; i++) {if (lucky[x[i]]) cout << "lucky\n"; // 本来就是幸运数else cout << nxt[x[i]] << '\n'; // 输出幸运化后的结果}return 0;}代码思路——
2023年12月 C++五级 烹饪问题
#include<bits/stdc++.h>using namespace std;intmain(){// 关闭cin与C标准IO的同步,大幅加快cin读取速度ios::sync_with_stdio(false);// 解绑cin和cout,cout输出不会强制刷新cin缓冲区,进一步加速输入cin.tie(nullptr);int N;cin >> N;vector<unsignedint> a(N);// 读取所有食材的美味度for(int i = 0; i < N; i++){cin >> a[i];}// res:贪心构造的答案,初始二进制全0int res = 0;// 从第30位开始向下枚举(int最大到2^30,共31位:bit 30 ~ 0)for(int bit = 30; bit >= 0; bit--){// mask = 已确定的高位res,再尝试把当前bit位设为1,测试是否可行int mask = res | (1 << bit);int cnt = 0; // 记录满足条件的数字个数for(auto num : a){// 如果 num & mask == mask,说明num拥有mask里所有二进制为1的位if( (num & mask) == mask ){cnt++;// 找到2个满足条件的数就足够,提前退出循环,节省时间if(cnt >= 2) break;}}// 存在至少两个数同时包含mask的所有1位,这一位可以保留为1if(cnt >= 2){res = mask;}// 否则:这一位不能取1,res保持不变,继续测试更低的位}// 输出最大的契合度(两个数按位与的最大值)cout << res << endl;return 0;}课程体系——
需要无水印PDF格式文件, 或者课程体系咨询, 欢迎扫描下面二维码添加好友垂询。
▍ 声明:本文整理自网络,如有侵权,请联系删除。
本公号刊载此文,是出于合法合理地分享和传播信息,扩大大受众范围,促进学术交流,推动共同进步之目的。公众号持有人郑重声明,本文的发布,将严格遵守相关规定和法律法规,不侵犯任意潜在作者的权益,不改变引用原文(若有)的意图和内容。若有来源标注错误或侵犯了您的合法权益,请随时与我们联系协商,联系(QQ):993225721,我们将及时更正、删除。文章若有幸得到转载,首先,公众号持有人感谢转载人为读者阅读提供了有价值的信息和知识,希望文章能够在被转载的平台上得到更广泛的传播和交流;其次,转载人应充分考虑到转载动作本身所可能带来的相应的风险和责任,包括但不限于侵犯知识产权、侵犯他人权益等行为所引起的法律责任,确保本文的合法传播和使用。同时,本人也极其愿意在转载过程中尽力配合转载人了解、关注、规避、消除相关的潜在风险。若转载人有相任何关疑虑,同样欢迎随时与我们联系协商,联系(QQ):993225721。 喜欢您关注我们哦——































































