Files
cpp-courseware/2.Course/5.C++_Exam/NOI/CSP-J 初赛模拟卷/答案解析/CSP-J初赛模拟卷·第14套-答案解析.md
T
xiaolinquan 0af92a68d9 整理 NOI 初赛资料目录并标准化 CSP-J 模拟卷
- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析
- 补充SVG图示,统一试题排版并导出打印PDF
- 重整初赛专题训练与复习资料目录,清理旧版源文件
2026-11-06 17:50:51 +08:00

9.4 KiB
Raw Blame History

CSP-J 初赛模拟卷(第 14 套)
参考答案与解析

一、单项选择题

答案速查

题号 1 2 3 4 5 6 7 8
答案 A D D A C C D C
题号 9 10 11 12 13 14 15
答案 B A B B B A B

逐题解析

第1题

答案: A

解析: 一个字节为 8 位,因此 32 位整型变量占 32/8=4 个字节。

第2题

答案: D

解析: 00100100 和 00010101 分别表示 36 和 $21$,相加为 $57$,二进制结果为 00111001。

第3题

答案: D

解析: 汇编语言仍用于与硬件密切相关的程序和特定性能要求的场景,并未被完全淘汰,因此 D 的说法错误。

第4题

答案: A

解析: FTP 是文件传输协议,用于在网络中的计算机之间传输文件。

第5题

答案: C

解析: 只含一种字母的不同非空子串有 3\times3=9 个;跨越 A/B 或 B/C 边界的各有 3\times3=9 个;同时含 A、B、C 的有 3\times3=9 个。共 9+9+9+9=36 个。

第6题

答案: C

解析: 对非负的 x,先乘 $100$,加 0.5 后转为整数以完成四舍五入,再除以 100.0 恢复数量级,对应选项 C。

第7题

答案: D

解析: 补码 11111001 的符号位为 $1$,表示负数;逐位取反再加一,得其绝对值 00000111,即 $7$。所以原码为 10000111。

第8题

答案: C

解析: 欧几里得算法利用 $\gcd(a,b)=\gcd(b,a\bmod b)$,当 b==0 时返回 a,计算的是最大公约数。

第9题

答案: B

解析: 将三个盘子中的苹果数按从大到小排列,可得 $(7,0,0)$、$(6,1,0)$、$(5,2,0)$、$(5,1,1)$、$(4,3,0)$、$(4,2,1)$、$(3,3,1)$、$(3,2,2)$,共 8 种。

第10题

答案: A

解析: 各层最多分别有 1,2,4,\ldots,2^{n-1} 个结点,求和得到 $2^n-1$。

第11题

答案: B

解析: 无向完全图中,每两个不同顶点之间恰有一条边,因此边数为 $\binom72=7\times6/2=21$。

第12题

答案: B

解析: 根的高度为 1 时,高度为 h 的完全二叉树满足 $2^{h-1}\le n\le2^h-1$。由于 $32\le61\le63$,所以高度为 $6$。

第13题

答案: B

解析: 元素 7 与后面的 2,3,5,4 形成 4 个逆序对,元素 5 与 4 再形成 1 个,合计 5 个。

第14题

答案: A

解析: 若 L[k] 同时大于两侧元素,应直接返回峰顶值,对应 c;若仍处于上升段,应搜索右半部分,对应 a;否则搜索左半部分,对应 b。顺序为 c、a、b。

第15题

答案: B

解析: 广度优先搜索按距起点的层次逐层扩展,先发现的结点先被扩展,因此通常使用先进先出的队列。

二、阅读程序

程序(1)

程序分析: 递归满足 $\operatorname{luo}(n,m)=\sum_{0\le i<m,\ i\text{ 为偶数}}\operatorname{luo}(n-1,i)$,边界为 n<=1 或 m<2。gu 以 -1 表示未计算,实现记忆化搜索。

答案速查

题号 16 17 18 19 20 21
答案 × √ √ √ B A
第16题

答案: ×(错误)

解析: 初次输入的 m 可以是奇数;递归产生的后续参数才由偶数循环变量 i 给出。

第17题

答案: √(正确)

解析: 当 m 为偶数时,改为 <= 会多计算 i=m 这一项。例如 luo(2,2) 会由 1 变为 $2$。

第18题

答案: √(正确)

解析: 删除的是记忆化的读取和写入,递归式与边界不变,因此结果相同,但运行时间可能显著增加。

第19题

答案: √(正确)

解析: 在题目的补码整数模型中,将每个字节置为 255 会使每个 int 的所有位均为 $1$,其值为 $-1$,与逐项赋值效果一致。

第20题

答案: B

解析: 输入为 4 8。由递推式可得 luo(4,8)=luo(3,0)+luo(3,2)+luo(3,4)+luo(3,6)=1+1+2+4=8。

第21题

答案: A

解析: 记忆化后至多有 O(nm) 个状态,每个状态枚举 O(m) 个转移,时间复杂度为 $O(nm^2)$。

程序(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)

程序分析: a[x]=y 与 b[y]=x 维护两侧结点的一一配对,冲突配对会先解除。最后分别统计两数组中的零元素;若当前有 t 对配对,输出为 $2n-2t$。

答案速查

题号 28 29 30 31 32 33
答案 √ × × × A A
第28题

答案: √(正确)

解析: 第一对正编号结点必定可以配对,之后的更新不会使配对总数降为零,因此 m>0 时最终至少有一对,输出小于 $2n$。

第29题

答案: ×(错误)

解析: 最终答案为偶数,但某一次执行 ++ans 后的中间值可以是奇数。例如仅配对 (1,2) 时,扫描 i=1 就可能使 ans 变为 $1$。

第30题

答案: ×(错误)

解析: 例如输入配对 (1,2)、(3,1) 后,a[1]=2、b[1]=3,二者可以同时大于零。

第31题

答案: ×(错误)

解析: 例如先后输入 (1,2)、(1,3),每次均有 x<y,但第二次仍须解除旧配对,因此相应语句会执行。

第32题

答案: A

解析: 两侧编号分别互不相同时,所有 m 对都能保留,零元素总数为 $2(n-m)=2n-2m$。

第33题

答案: A

解析: 所有 y 相同时,最终只能保留其中一对配对,故零元素总数为 $2n-2$。

三、完善程序

程序(1)

程序分析: 程序输出 2015 年指定月份的月历。offset 表示当月第一天相对星期日的偏移,先按此前月份天数逐月更新,再按每七天换行。

答案速查

题号 答案
34 offset = 4
35 (offset + dayNum[i]) % 7
36 dayNum[m]
37 i
38 (offset + i) % 7
第34题

答案: offset = 4

解析: 2015 年 1 月 1 日为星期四;以星期日为 $0$,初始偏移为 $4$。

第35题

答案: (offset + dayNum[i]) % 7

解析: 跨过第 i 个月后,偏移增加该月天数并对 7 取模,即 (offset+dayNum[i])%7。

第36题

答案: dayNum[m]

解析: 应依次输出指定月份的全部日期,因此上界为 dayNum[m]。

第37题

答案: i

解析: 循环变量 i 就是当前日期,直接输出 i。

第38题

答案: (offset + i) % 7

解析: 当 offset+i 恰为 7 的倍数时已输出到星期六,应换行,因此判断 (offset+i)%7 是否为零。

程序(2)

程序分析: 递归把一个 2^n\times2^n 的矩阵分成四个子矩阵,左上、右上、左下保持当前值 t,右下取反。到单个元素时写入 t。初始元素为 $0$。

答案速查

题号 39 40 41 42 43
答案 C D B B B
第39题

答案: C(t)

解析: n==0 时对应单个元素,其值就是参数 t。

第40题

答案: D(x, y)

解析: 左上子矩阵的左上角不变,应继续使用坐标 x,y。

第41题

答案: B(x + step, y + step)

解析: 右下子矩阵的行、列起点都需加上 step,并由已有参数 !t 实现取反。

第42题

答案: B(n, 0)

解析: 初始调用需递归 n 层,且原始元素为 $0$,因此传入 n,0。

第43题

答案: B(1<<n)

解析: 变换 n 次后的边长为 $2^n$,对应位移表达式 1<<n。