- 将18套模拟卷分离为试题和答案解析,补齐并规范逐题解析 - 补充SVG图示,统一试题排版并导出打印PDF - 重整初赛专题训练与复习资料目录,清理旧版源文件
9.4 KiB
一、单项选择题
答案速查
| 题号 | 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。