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

9.7 KiB
Raw Blame History

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

一、单项选择题

答案速查

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

逐题解析

第1题

答案: D

解析: 蓝牙、Wi-Fi 和 GPRS 均属于无线通信技术;本题中的以太网指常见的有线局域网技术。

第2题

答案: B

解析: 8 位补码的最高位为符号位。该数表示的十进制值为 $-2^7+2^5+2^3+2^1+2^0=-128+32+8+2+1=-85$。

第3题

答案: D

解析: 光盘、磁盘和固态硬盘均可保存数据;鼠标用于输入操作信息,不属于存储设备。

第4题

答案: A

解析: 编译器将源程序翻译为目标代码,供计算机进一步链接或执行,本题对应将源程序翻译成机器指令代码。

第5题

答案: A

解析: s 先被赋为 a,随后循环执行 c 次减一操作,因此最终为 s=a-c。

第6题

答案: A

解析: 将元素两两分组,先比较每组大小,再分别在较大元素中找最大值、在较小元素中找最小值,最坏情况下共需 \lceil3N/2\rceil-2 次比较。

第7题

答案: A

解析: 三个数字各不相同时有 3!=6 种。数字 1 出现两次时,另一位可选 2 或 3,共 2\times3=6 种;数字 2 出现两次时同样有 6 种。合计 18 种。

第8题

答案: B

解析: 先令新结点的 next 指向原栈顶 hs,再令 hs 指向新结点 s,即依次执行 s->next=hs; hs=s;。

第9题

答案: D

解析: 有 n 个顶点的树恰有 n-1 条边。原图有 m 条边,保留一棵生成树后需删除 m-(n-1)=m-n+1 条边。

第10题

答案: C

解析: 球和袋子都不可区分,等价于将 8 分拆为至多 5 个正整数。按非空袋子数 1,2,3,4,5 分类,分别有 1,4,5,5,3 种,共 18 种。

第11题

答案: B

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

第12题

答案: B

解析: $10000=2^4\times5^4$。在 1 至 10000 中,去掉能被 2 或 5 整除的数,并加回被重复扣除的 10 的倍数,得到 10000-5000-2000+1000=4000 个。

第13题

答案: D

解析: 前两轮只将 n 增加到 $1$、$2$。第三轮 n=3,满足 n%3==0,执行 k-- 后 k=3;循环条件 n<k 不再成立,输出 3,3。

第14题

答案: C

解析: 操作系统负责管理 CPU、内存、外部设备等硬件资源,并为程序运行和用户操作提供统一的管理与服务。

第15题

答案: A

解析: 为避免 Jacob 看到照片,不能直接分享给他,也不能分享给他的朋友,否则这些朋友的评论会使照片对他可见。图中 Dana、Michael、Eve 符合条件,对应 A。

二、阅读程序

程序(1)

程序分析: 程序根据两球球心距离与半径关系,分别处理相离、包含及部分相交三种情形,计算两球交集体积。常数 r=acos(0.5)=π/3,最后保留四位小数。

答案速查

题号 16 17 18 19 20 21
答案 √ × × √ D C
第16题

答案: √(正确)

解析: 在题目给定坐标范围内,整数计算的距离平方可被 double 精确表示,后续计算数值不变,因此修改类型不影响结果。

第17题

答案: ×(错误)

解析: 先除以 sqrt(t) 时会进行浮点除法;若先除以整数 $2$,分子可能先被整数截断,结果可能改变。

第18题

答案: ×(错误)

解析: sq 的形参为 int,把浮点数 x、y 传入时会先截断小数,与直接计算 x*x、y*y 不同。

第19题

答案: √(正确)

解析: 两球半径均为 $1$、球心距离为 $1$,交集体积为 $5π/12\approx1.3090$,与题述输出相同。

第20题

答案: D

解析: 两球球心均为 (1,1,1),半径为 $1$、$2$,交集就是半径为 1 的球,体积为 $4π/3\approx4.1888$。

第21题

答案: C

解析: 包含时取较小球体积,相离时输出零,部分相交时相加两个球冠体积,因此求的是两球体积的交集。

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

程序分析: 程序通过线性筛求约数函数。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)

程序分析: 将排列值映射到其原位置,按原位置建立双向链表,再按数值从小到大删除相应结点。删除某位置时,尚在其右边的最近结点就是该位置右侧第一个更大的元素。

答案速查

题号 答案
34 a[x] = i
35 i+1
36 R[a[i]]
37 a[i]
38 R[i]
第34题

答案: a[x] = i

解析: 读到位置 i 的值为 x,应记录值 x 所在的位置,即 a[x]=i。

第35题

答案: i+1

解析: 初始按位置顺序相连,位置 i 的右邻为 i+1,最后一个结点的右邻为哨兵 n+1。

第36题

答案: R[a[i]]

解析: 删除 a[i] 时,其右邻的左指针应越过该结点,故左侧下标为 R[a[i]]。

第37题

答案: a[i]

解析: 其左邻的右指针也应越过当前结点,接到 R[a[i]],所填下标为 a[i]。

第38题

答案: R[i]

解析: R[i] 已保留位置 i 右边第一个更大元素的位置;不存在时为哨兵 n+1。

程序(2)

程序分析: 程序从后向前枚举保留的后缀,维护后缀总分与最低分,删除最低分后计算平均分,记录达到最大平均分的前缀删除长度。

答案速查

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

答案: C(sum=s[n])

解析: 开始枚举前,后缀只有最后一项,应令 sum=s[n]。

第40题

答案: B(sum+=s[i])

解析: 将第 i 项纳入当前后缀后,需要执行 sum+=s[i]。

第41题

答案: D((double)(sum-minScore)/(n-i))

解析: 后缀含 n-i+1 项,去掉最低分后剩 n-i 项,平均分为 (double)(sum-minScore)/(n-i)。

第42题

答案: C(cnt=1;k[cnt]=i-1;)

解析: 发现更优平均分时,应清空此前候选,把当前删除的前缀长度 i-1 作为首个结果保存。

第43题

答案: B(k[++cnt]=i-1;)

解析: 平均分相同时追加当前答案,执行 k[++cnt]=i-1,保留所有达到最优值的删除长度。