CSP-J 初赛模拟卷(第 05 套)
参考答案与解析
---
#### **一、单项选择题**
**答案速查**
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | B | A | D | A | B | C | D | C |
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | B | A | B | C | D | C | C |
**逐题解析**
##### 第1题
**答案:** B
**解析:** 全国青少年计算机程序设计竞赛(NOI)由中国计算机学会于 1984 年创办。
##### 第2题
**答案:** A
**解析:** 一个字节为 $8$ 位,因此 $32$ 位整型变量占 $32/8=4$ 个字节。
##### 第3题
**答案:** D
**解析:** 前三项均等于十进制 $617$:$(269)_{16}=617$,$(1151)_8=617$。而 $(1001101011)_2=512+64+32+8+2+1=619$,因此 D 不同。
##### 第4题
**答案:** A
**解析:** 各层结点数依次为 $1,k,k^2,\ldots,k^h$,相加得到等比数列和 $1+k+\cdots+k^h=(k^{h+1}-1)/(k-1)$。
##### 第5题
**答案:** B
**解析:** `s` 初始为 `a`,循环共执行 `c` 次,每次加 $1$,所以结束后 `s=a+c`。
##### 第6题
**答案:** C
**解析:** 共有 $2048\times1024$ 个像素,每个像素占 $32/8=4$ 字节。总空间为 $2048\times1024\times4=8\times1024^2$ 字节,即 $8\ \mathrm{MB}$。
##### 第7题
**答案:** D
**解析:** 由握手定理,所有顶点的度数之和为边数的两倍。设顶点数为 $n$,则 $2n=2\times16$,得到 $n=16$。
##### 第8题
**答案:** C
**解析:** `1` 和 `n` 都是整数,因此 `1/n` 执行整数除法;当 `n>1` 时结果为 $0$。应将分子写为 `1.0` 等浮点数,才能得到所需的小数值。
##### 第9题
**答案:** B
**解析:** 8 位补码的最高位为符号位。该数表示的十进制值为 $-2^7+2^5+2^3+2^1+2^0=-128+32+8+2+1=-85$。
##### 第10题
**答案:** A
**解析:** 先从 $5$ 种颜色中选出形成完整手套的 $2$ 种,再从剩余 $3$ 种中选出 $2$ 种,各取一只。单只手套分别有左右手两种选择,因此共有 $\binom52\binom32\times2^2=120$ 种。
##### 第11题
**答案:** B
**解析:** 根的高度为 $1$ 时,高度为 $h$ 的完全二叉树满足 $2^{h-1}\le n\le2^h-1$。由于 $32\le61\le63$,所以高度为 $6$。
##### 第12题
**答案:** C
**解析:** IPv4 地址的每一段为 $8$ 位,取值范围是 $0$ 至 $255$。选项 C 中出现了 `256`,超出了该范围。
##### 第13题
**答案:** D
**解析:** 寄存器位于 CPU 内部,用于暂存操作数、地址及中间结果,是 CPU 的重要组成部分。
##### 第14题
**答案:** C
**解析:** POP3、SMTP、IMAP 均用于电子邮件的发送或接收;WTO 是世界贸易组织的英文缩写,不是电子邮件协议。
##### 第15题
**答案:** C
**解析:** 采用流水作业:第一道菜在 $30$ 分钟完成,后两道菜各间隔 $10$ 分钟完成。总用时为 $30+10+10=50$ 分钟。
#### **二、阅读程序**
##### 程序(1)
**程序分析:** `encoder` 先放入 `C、S、P`,再按字母序补齐其余字母;`decoder` 是其逆映射。程序把输入字母按这张逆映射表逐个替换。
**答案速查**
| 题号 | 16 | 17 | 18 | 19 | 20 | 21 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | √ | × | √ | × | A | D |
###### 第16题
**答案:** √(正确)
**解析:** 下标为 `st[i]-'A'`,只有大写字母才能保证下标位于 $0$ 至 $25$ 之间。
###### 第17题
**答案:** ×(错误)
**解析:** 并非每个字母都会变化,例如字母 `Z` 的映射仍为 `Z`,输入 `Z` 就与输出相同。
###### 第18题
**答案:** √(正确)
**解析:** 需要检查是否预先出现的特殊字母 `C、S、P` 都在前三个位置;后续补入的字母小于当前枚举字母,不会造成遗漏,因此修改该检查上界不影响结果。
###### 第19题
**答案:** ×(错误)
**解析:** 只建立前 $16$ 个位置的逆映射会漏掉后续字母,部分输入无法被正确还原,输出可能改变。
###### 第20题
**答案:** A
**解析:** 要输出 `A、B、C`,输入应分别是 `encoder[0..2]`,即 `C、S、P`,因此输入既有 `S` 又有 `P`。
###### 第21题
**答案:** D
**解析:** 输出 `C、S、P` 分别对应输入 `P、R、N`,所以输入既没有 `S`,也没有 `A`。
##### 程序(2)
**程序分析:** 对每个位置 `i`,程序输出从该位置向右、连续元素均不大于 `a[i]` 的最远端点 `ans`。若当前值比前一个值小,则重新从 `i` 开始寻找。
**答案速查**
| 题号 | 22 | 23 | 24 | 25 | 26 | 27 |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 答案 | × | √ | √ | √ | D | A |
###### 第22题
**答案:** ×(错误)
**解析:** `ans` 至少等于 `i`,但可能恰好等于 `i`;例如严格递增序列中每次输出就是当前位置,因此不保证严格大于。
###### 第23题
**答案:** √(正确)
**解析:** 只有在 `ansA[p-1].b`)
**解析:** 已保留区间的右端点严格递增;只有当前右端点大于最后保留区间的右端点时,才有保留价值。
###### 第37题
**答案:** A(`q+1