整理 NOI 初赛资料目录并标准化 CSP-J 模拟卷
- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析 - 补充SVG图示,统一试题排版并导出打印PDF - 重整初赛专题训练与复习资料目录,清理旧版源文件
This commit is contained in:
1 parent
fe5c7ffd58
commit
0af92a68d9
216 files changed
+12743
-1272
No files matched your search
@@ -0,0 +1,334 @@
|
||||
<center><font size="6"><b>CSP-J 初赛模拟卷(第 09 套)</b></font></center>
|
||||
<center><font size="4"><b>参考答案与解析</b></font></center>
|
||||
|
||||
---
|
||||
|
||||
#### **一、单项选择题**
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | D | A | B | C | D | A | A | A |
|
||||
|
||||
| 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | B | C | B | C | B | B | C |
|
||||
|
||||
**逐题解析**
|
||||
|
||||
##### 第1题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** C 语言属于过程式程序设计语言;其余选项中的 C++、Python 和 Java 均支持面向对象程序设计。
|
||||
|
||||
##### 第2题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 存储单元的唯一标识称为地址,CPU 根据地址读写相应的存储单元。
|
||||
|
||||
##### 第3题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 广域网的英文为 Wide Area Network,缩写为 WAN;LAN 和 MAN 分别表示局域网和城域网。
|
||||
|
||||
##### 第4题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 共有 $2048\times1024$ 个像素,每个像素占 $32/8=4$ 字节。总空间为 $2048\times1024\times4=8\times1024^2$ 字节,即 $8\ \mathrm{MB}$。
|
||||
|
||||
##### 第5题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** 若先输出 `c`、`d`,则 `a`、`b` 仍在栈中,且 `b` 位于 `a` 上方。在输出 `a` 之前必须先输出 `b`,因此 `c,d,a,e,b` 不合法。
|
||||
|
||||
##### 第6题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 折半查找每次将候选范围约减半,最坏比较次数为 $\lfloor\log_2 100\rfloor+1=7$。
|
||||
|
||||
##### 第7题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 含 $n$ 个顶点的连通无向图至少有 $n-1$ 条边;取一棵生成树即可达到这个最小值。因此 $10$ 个顶点可用 $9$ 条边构成连通图。
|
||||
|
||||
##### 第8题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 先给每个班分配一个名额,再将剩余 $3$ 个相同名额分给 $7$ 个不同班级。由隔板法,方案数为 $\binom{3+7-1}{7-1}=\binom96=84$。
|
||||
|
||||
##### 第9题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 高度为 $h$ 的完全二叉树满足 $2^{h-1}\le n\le2^h-1$。因为 $32\le61\le63$,所以高度为 $6$。
|
||||
|
||||
##### 第10题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 球和袋子都不可区分,等价于将 $8$ 分拆为至多 $5$ 个正整数。按非空袋子数 $1,2,3,4,5$ 分类,分别有 $1,4,5,5,3$ 种,共 $18$ 种。
|
||||
|
||||
##### 第11题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 哈夫曼算法每次选择当前权值最小的两个结点合并,以局部最优选择构造整体最优编码树,属于贪心策略。
|
||||
|
||||
##### 第12题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 递归展开为 $7\times\operatorname{solve}(5)=7\times5\times\operatorname{solve}(3)=7\times5\times3\times2=210$。
|
||||
|
||||
##### 第13题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 从 `a` 出发的深度优先搜索,最后访问的顶点可以是 `b` 或 `e`,其余两点均不能成为最后访问的顶点,因此共有 $2$ 个。
|
||||
|
||||
##### 第14题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** 安排用时为 $1$、$2$ 的两人先过河,用时 $1$ 的人返回;再让用时 $4$、$8$ 的两人过河,用时 $2$ 的人返回;最后前两人一起过河。总时间为 $2+1+8+2+2=15$。
|
||||
|
||||
##### 第15题
|
||||
|
||||
**答案:** C
|
||||
|
||||
**解析:** 由辗转相除法,$377=319+58$,$319=5\times58+29$,$58=2\times29$,所以最大公约数为 $29$。
|
||||
|
||||
#### **二、阅读程序**
|
||||
|
||||
##### 程序(1)
|
||||
|
||||
**程序分析:** 程序枚举字符串长度 $n$ 的所有正因数 $i$,检查下标为 `i-1` 的字符,并对满足 `c>='a'` 的字符进行减去大小写编码差的转换。可能被修改的位置数等于 $n$ 的正因数个数。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 16 | 17 | 18 | 19 | 20 | 21 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | × | √ | × | √ | B | B |
|
||||
|
||||
###### 第16题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** `scanf("%s",st)` 可以读取不含空白的数字、标点等字符,并不限于大小写字母。
|
||||
|
||||
###### 第17题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 当 `i=0` 时,第一次计算 `n%i` 就会出现除数为零的问题,因此程序不能正常执行。
|
||||
|
||||
###### 第18题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** 将循环上界缩小到 $\sqrt n$ 后,会漏掉大于 $\sqrt n$ 的因数对应的位置,因此输出可能改变。
|
||||
|
||||
###### 第19题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 大写字母的编码均小于小写字母 `a`,不满足修改条件,因此字符串保持不变。
|
||||
|
||||
###### 第20题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** $18$ 的正因数为 $1,2,3,6,9,18$,共 $6$ 个;让这些位置都为小写字母即可使 $6$ 个字符发生变化。
|
||||
|
||||
###### 第21题
|
||||
|
||||
**答案:** B
|
||||
|
||||
**解析:** $100000=2^5\times5^5$,正因数个数为 $(5+1)(5+1)=36$。其余三个长度的因数个数分别为 $9、1、8$。
|
||||
|
||||
##### 程序(2)
|
||||
|
||||
**程序分析:** 对每个位置 `i`,程序输出从该位置向右、连续元素均不大于 `a[i]` 的最远端点 `ans`。若当前值比前一个值小,则重新从 `i` 开始寻找。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 22 | 23 | 24 | 25 | 26 | 27 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | × | √ | √ | √ | D | A |
|
||||
|
||||
###### 第22题
|
||||
|
||||
**答案:** ×(错误)
|
||||
|
||||
**解析:** `ans` 至少等于 `i`,但可能恰好等于 `i`;例如严格递增序列中每次输出就是当前位置,因此不保证严格大于。
|
||||
|
||||
###### 第23题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 只有在 `ans<n` 时才执行递增操作,故 `ans` 不会超过 $n$。
|
||||
|
||||
###### 第24题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** 下降时两种条件都会重置;上升时重置为 `i` 也不会丢失合法的更远端点;相等时两种条件都不重置,因此结果不变。
|
||||
|
||||
###### 第25题
|
||||
|
||||
**答案:** √(正确)
|
||||
|
||||
**解析:** `ans` 是连续满足约束的最远端点。既然已越过 `i+1`,该位置的值必然不大于 `a[i]`。
|
||||
|
||||
###### 第26题
|
||||
|
||||
**答案:** D
|
||||
|
||||
**解析:** 严格递增时,每轮只需常数次判断,`ans` 随位置推进,整体时间复杂度为 $O(n)$。
|
||||
|
||||
###### 第27题
|
||||
|
||||
**答案:** A
|
||||
|
||||
**解析:** 严格递减时,每个位置都会重置并向右扫描至末尾,总次数为 $n+(n-1)+\cdots+1$,最坏复杂度为 $O(n^2)$。
|
||||
|
||||
##### 程序(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)
|
||||
|
||||
**程序分析:** 程序用二进制快速幂计算 $x^p\bmod m$。指数为奇数时把当前底数乘入结果,然后指数折半、底数平方,每次乘法后取模。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 答案 |
|
||||
| :---: | :--- |
|
||||
| 34 | `1` |
|
||||
| 35 | `p > 0` |
|
||||
| 36 | `result * x % m` |
|
||||
| 37 | `x * x % m` |
|
||||
| 38 | `result` |
|
||||
|
||||
###### 第34题
|
||||
|
||||
**答案:** `1`
|
||||
|
||||
**解析:** 乘法的单位元为 $1$,因此结果累加器初始化为 `1`。
|
||||
|
||||
###### 第35题
|
||||
|
||||
**答案:** `p > 0`
|
||||
|
||||
**解析:** 指数尚未全部处理时继续循环,条件为 `p>0`。
|
||||
|
||||
###### 第36题
|
||||
|
||||
**答案:** `result * x % m`
|
||||
|
||||
**解析:** 当当前二进制位为 $1$ 时,应执行 `result=result*x%m`。
|
||||
|
||||
###### 第37题
|
||||
|
||||
**答案:** `x * x % m`
|
||||
|
||||
**解析:** 指数每次除以二,底数需相应平方并取模,即 `x*x%m`。
|
||||
|
||||
###### 第38题
|
||||
|
||||
**答案:** `result`
|
||||
|
||||
**解析:** 最终所求余数保存在 `result` 中,直接输出即可。
|
||||
|
||||
##### 程序(2)
|
||||
|
||||
**程序分析:** 程序模拟编号为 $0$ 至 $n-1$ 的约瑟夫环,每隔一名存活者淘汰一人。`F` 标记淘汰状态,`c` 记录已淘汰人数,`p` 在存活者之间交替计数。
|
||||
|
||||
**答案速查**
|
||||
|
||||
| 题号 | 39 | 40 | 41 | 42 | 43 |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| 答案 | D | C | C | D | B |
|
||||
|
||||
###### 第39题
|
||||
|
||||
**答案:** D(`c < n - 1`)
|
||||
|
||||
**解析:** 保留一人时结束,因此循环条件为 `c<n-1`,对应选项 D。
|
||||
|
||||
###### 第40题
|
||||
|
||||
**答案:** C(`p`)
|
||||
|
||||
**解析:** `p` 为真时淘汰当前存活者,为假时跳过,所填条件为 `p`。
|
||||
|
||||
###### 第41题
|
||||
|
||||
**答案:** C(`c++`)
|
||||
|
||||
**解析:** 每淘汰一人,已淘汰人数加一,应执行 `c++`。
|
||||
|
||||
###### 第42题
|
||||
|
||||
**答案:** D(`p ^= 1`)
|
||||
|
||||
**解析:** 每访问一名存活者后切换淘汰与跳过状态,执行 `p^=1`。
|
||||
|
||||
###### 第43题
|
||||
|
||||
**答案:** B(`i = (i+1) % n`)
|
||||
|
||||
**解析:** 沿环前进并在到达 $n$ 时回到 $0$,执行 `i=(i+1)%n`,对应选项 B。
|
||||
Reference in new issue
Block a user