- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析 - 补充SVG图示,统一试题排版并导出打印PDF - 重整初赛专题训练与复习资料目录,清理旧版源文件
9.7 KiB
一、单项选择题
答案速查
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 答案 | D | B | D | A | A | A | A | B |
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|
| 答案 | D | C | B | B | D | C | A |
逐题解析
第1题
答案: D
解析: 蓝牙、Wi-Fi 和 GPRS 均属于无线通信技术;本题中的以太网指常见的有线局域网技术。
第2题
答案: B
解析: 8 位补码的最高位为符号位。该数表示的十进制值为 $-2^7+2^5+2^3+2^1+2^0=-128+32+8+2+1=-85$。
第3题
答案: D
解析: 光盘、磁盘和固态硬盘均可保存数据;鼠标用于输入操作信息,不属于存储设备。
第4题
答案: A
解析: 编译器将源程序翻译为目标代码,供计算机进一步链接或执行,本题对应将源程序翻译成机器指令代码。
第5题
答案: A
解析: s 先被赋为 a,随后循环执行 c 次减一操作,因此最终为 s=a-c。
第6题
答案: A
解析: 将元素两两分组,先比较每组大小,再分别在较大元素中找最大值、在较小元素中找最小值,最坏情况下共需 \lceil3N/2\rceil-2 次比较。
第7题
答案: A
解析: 三个数字各不相同时有 3!=6 种。数字 1 出现两次时,另一位可选 2 或 3,共 2\times3=6 种;数字 2 出现两次时同样有 6 种。合计 18 种。
第8题
答案: B
解析: 先令新结点的 next 指向原栈顶 hs,再令 hs 指向新结点 s,即依次执行 s->next=hs; hs=s;。
第9题
答案: D
解析: 有 n 个顶点的树恰有 n-1 条边。原图有 m 条边,保留一棵生成树后需删除 m-(n-1)=m-n+1 条边。
第10题
答案: C
解析: 球和袋子都不可区分,等价于将 8 分拆为至多 5 个正整数。按非空袋子数 1,2,3,4,5 分类,分别有 1,4,5,5,3 种,共 18 种。
第11题
答案: B
解析: 高度为 h 的完全二叉树满足 $2^{h-1}\le n\le2^h-1$。因为 $32\le61\le63$,所以高度为 $6$。
第12题
答案: B
解析: $10000=2^4\times5^4$。在 1 至 10000 中,去掉能被 2 或 5 整除的数,并加回被重复扣除的 10 的倍数,得到 10000-5000-2000+1000=4000 个。
第13题
答案: D
解析: 前两轮只将 n 增加到 $1$、$2$。第三轮 n=3,满足 n%3==0,执行 k-- 后 k=3;循环条件 n<k 不再成立,输出 3,3。
第14题
答案: C
解析: 操作系统负责管理 CPU、内存、外部设备等硬件资源,并为程序运行和用户操作提供统一的管理与服务。
第15题
答案: A
解析: 为避免 Jacob 看到照片,不能直接分享给他,也不能分享给他的朋友,否则这些朋友的评论会使照片对他可见。图中 Dana、Michael、Eve 符合条件,对应 A。
二、阅读程序
程序(1)
程序分析: 程序根据两球球心距离与半径关系,分别处理相离、包含及部分相交三种情形,计算两球交集体积。常数 r=acos(0.5)=π/3,最后保留四位小数。
答案速查
| 题号 | 16 | 17 | 18 | 19 | 20 | 21 |
|---|---|---|---|---|---|---|
| 答案 | √ | × | × | √ | D | C |
第16题
答案: √(正确)
解析: 在题目给定坐标范围内,整数计算的距离平方可被 double 精确表示,后续计算数值不变,因此修改类型不影响结果。
第17题
答案: ×(错误)
解析: 先除以 sqrt(t) 时会进行浮点除法;若先除以整数 $2$,分子可能先被整数截断,结果可能改变。
第18题
答案: ×(错误)
解析: sq 的形参为 int,把浮点数 x、y 传入时会先截断小数,与直接计算 x*x、y*y 不同。
第19题
答案: √(正确)
解析: 两球半径均为 $1$、球心距离为 $1$,交集体积为 $5π/12\approx1.3090$,与题述输出相同。
第20题
答案: D
解析: 两球球心均为 (1,1,1),半径为 $1$、$2$,交集就是半径为 1 的球,体积为 $4π/3\approx4.1888$。
第21题
答案: C
解析: 包含时取较小球体积,相离时输出零,部分相交时相加两个球冠体积,因此求的是两球体积的交集。
程序(2)
程序分析: 当 k>1 时,数组 d 模拟 k 进制计数,len 为有效位数,ans 记录进位次数。因此 $\mathrm{ans}=\sum_{t\ge1}\lfloor n/k^t\rfloor$。当 k=1 时应直接分析程序,此时每轮恰有一次进位,最终 ans=n。
答案速查
| 题号 | 22 | 23 | 24 | 25 | 26 | 27 |
|---|---|---|---|---|---|---|
| 答案 | × | × | √ | D | B | D |
第22题
答案: ×(错误)
解析: 当 k=1 时,第一轮使 len 变为 $2$,随后不再增加,因此 len 并不总等于 $n$。
第23题
答案: ×(错误)
解析: 取 $n=1,k=2$,最终 len=1,并不小于 $n$,即可构成反例。
第24题
答案: √(正确)
解析: len 是 n 的 k 进制位数,满足 $k^{\mathrm{len}-1}\le n<k^{\mathrm{len}}$,因此该不等式成立。
第25题
答案: D
解析: k=1 时每次外层循环使 ans 加一,执行 n 次后结果为 $n=10^{15}$。
第26题
答案: B
解析: 进位总数为 $3^{29}+3^{28}+\cdots+1=(3^{30}-1)/2$。
第27题
答案: D
解析: 按公式依次累加 \lfloor n/10\rfloor、\lfloor n/10^2\rfloor 等,得到 $11112222444453$,对应 D。
程序(3)
程序分析: 程序通过线性筛求约数函数。f[x] 是正约数个数,g[x] 是正约数之和,c、d 辅助维护最小质因子的幂次及其余部分。
答案速查
| 题号 | 28 | 29 | 30 | 31 | 32 | 33 |
|---|---|---|---|---|---|---|
| 答案 | √ | × | × | A | C | C |
第28题
答案: √(正确)
解析: f[1]=g[1]=1 只为输入 1 的结果提供初值;大于 1 的项由质数分支或递推独立得到,因此其他输入不受影响。
第29题
答案: ×(错误)
解析: c[i*k] 等于 i 中相应质因子指数加一,恰是约数个数乘积公式中的一个因子,因此该除法能够整除。
第30题
答案: ×(错误)
解析: 约数和也不单调,例如 g[6]=12,而 g[7]=8,由 6 到 7 反而减小。
第31题
答案: A
解析: 每个合数只由其最小质因子筛到一次,所有筛选与转移的总时间为 $O(n)$。
第32题
答案: C
解析: 正约数恰有两个的数正是质数,1 至 100 中共有 25 个质数。
第33题
答案: C
解析: $1000=2^3\times5^3$,约数个数为 $(3+1)^2=16$,约数和为 $(1+2+4+8)(1+5+25+125)=2340$。
三、完善程序
程序(1)
程序分析: 将排列值映射到其原位置,按原位置建立双向链表,再按数值从小到大删除相应结点。删除某位置时,尚在其右边的最近结点就是该位置右侧第一个更大的元素。
答案速查
| 题号 | 答案 |
|---|---|
| 34 | a[x] = i |
| 35 | i+1 |
| 36 | R[a[i]] |
| 37 | a[i] |
| 38 | R[i] |
第34题
答案: a[x] = i
解析: 读到位置 i 的值为 x,应记录值 x 所在的位置,即 a[x]=i。
第35题
答案: i+1
解析: 初始按位置顺序相连,位置 i 的右邻为 i+1,最后一个结点的右邻为哨兵 n+1。
第36题
答案: R[a[i]]
解析: 删除 a[i] 时,其右邻的左指针应越过该结点,故左侧下标为 R[a[i]]。
第37题
答案: a[i]
解析: 其左邻的右指针也应越过当前结点,接到 R[a[i]],所填下标为 a[i]。
第38题
答案: R[i]
解析: R[i] 已保留位置 i 右边第一个更大元素的位置;不存在时为哨兵 n+1。
程序(2)
程序分析: 程序从后向前枚举保留的后缀,维护后缀总分与最低分,删除最低分后计算平均分,记录达到最大平均分的前缀删除长度。
答案速查
| 题号 | 39 | 40 | 41 | 42 | 43 |
|---|---|---|---|---|---|
| 答案 | C | B | D | C | B |
第39题
答案: C(sum=s[n])
解析: 开始枚举前,后缀只有最后一项,应令 sum=s[n]。
第40题
答案: B(sum+=s[i])
解析: 将第 i 项纳入当前后缀后,需要执行 sum+=s[i]。
第41题
答案: D((double)(sum-minScore)/(n-i))
解析: 后缀含 n-i+1 项,去掉最低分后剩 n-i 项,平均分为 (double)(sum-minScore)/(n-i)。
第42题
答案: C(cnt=1;k[cnt]=i-1;)
解析: 发现更优平均分时,应清空此前候选,把当前删除的前缀长度 i-1 作为首个结果保存。
第43题
答案: B(k[++cnt]=i-1;)
解析: 平均分相同时追加当前答案,执行 k[++cnt]=i-1,保留所有达到最优值的删除长度。