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