#4467. 2021 CSP-J1 入门级第一轮答案解析
2021 CSP-J1 入门级第一轮答案解析
单项选择
1.D
答案解析
C语言是面向过程的编译性语言。
2.B
答案解析
图灵奖是计算机领域的国际最高奖项。
3.A
答案解析
计算机中以二进制方式进存储数据。
4.C
答案解析
以第一个数作为初始值,从第二个数开始比较,最坏情况下需要到序列末尾才能得到最大值,即比较N-1。
5.D
答案解析
D选项中c和d出栈后,从栈顶到栈底至少有b,a,其中b还没有出栈,a无法先出栈。
6.D
答案解析
n个节点的树有n-1条边,则需要留下n-1条边,即需要删除m-(n-1)条边。
7.C
答案解析
其他进制转为十进制:按权展开求和。
- 整数部分:++ = 5,
- 小数部分:+ = 0.75,
- 结果为5.75。
8.A
答案解析
完全二叉树第5层最多有个节点,那么从左到右依次可以有连续k(1≤k≤16)个节点,一共有16种情况。
9.B
10.B
答案解析
- 第一组有,第二组有,第三组有
- 以上相加为90,但是没有区分组别,所以还需要除以,最终有15种。
11.B
答案解析
哈夫曼编码每次把频率最低的两个节点(字符)合并产生新的节点,将新的节点放到集合中,删除用来合并的两个节点,重复上述过程直到剩下一个节点为止.每次选择频率最小的两个节点就是贪心的思想.
12.A
答案解析
- 以1,1开头的三位数有2种;
- 以1,2开头的三位数有3种;
- 以1,3开头的三位数有2种;
- 以2,1开头的三位数有3种;
- 以2,2开头的三位数有2种;
- 以2,3开头的三位数有2种;
- 以3开头的三位数有4种;
- 一共有2+3+2+3+2+2+4=18种。
13.C
答案解析
- solve(7) = 7 * solve(7 - 2)
- solve(5) = 5 * solve(5 - 2)
- solve(3) = 3 * solve(3 - 1)
- solve(2) = 2 * solve(2 - 1)
- solve(1) = 1 那么solve(7)=75321 = 210。
14.B
答案解析
从a向b的方向开始搜索的终点是e (a-b-d-c-e),从a向c的方向开始搜索的终点是b(a-c-e-d-b)或c(a-c-d-b-e),则最多有两个终点分为b和c。
15.B
答案解析
1和2从A到B,1从B到A,此时A点有1、4、8,B点有2,所用时间为2+1=3;4和8从A到B,2从B到A,此时A点有1、2,B点有4、8,所用时间为8+2=10;1和2从A到B,所用时间为2;总时间为3+10+2=15。
阅读程序
16.B
答案解析
数组 int a[1000]没有1001个位置
17.B
答案解析
a[i]为负数也行,“去掉最低位的1”的操作对负数也有效,最终仍会去掉所有1,得到0。
18.B
答案解析
应为3 4 3 17 4,10=……1010,f(10)+g(10)=2+2=4。
19.A
答案解析
511998=……1111100111111111110,f(511998)+g(511998)=16+2=18
20.B
答案解析
主函数前g不声明不定义,无法在主函数种使用。
21.B
答案解析
- -65536=111111111111111100ooooooooo0o0oo,f(-65536)+g(-65536)=16+65536=65552
- 2147483647=01111111111111111111111111111111,f(2147483647)+g(2147483647)=31+1=32
22.B
答案解析
没有消息表明输入会保证这一点
23.A
答案解析
例如"a0=="和"a1=="均输出"k"。
24.A
答案解析
table[o]=Oxff=(11111111)2,按int解释为-1。
25.B
答案解析
函数包含对字符串中字符的遍历,每个字符常数次操作,故复杂度为o(字符串长度)。
26.B
答案解析
可以按table数组的下标、值对应关系模拟,但需要记忆ASCII码。更合适的方法是最后两个字符相差-2,故选B,这样不需要记忆记忆ASCII码。
27.C
答案解析
同可以记忆ASCII码模拟。更合适的方法是排除法,确定位数为8且最后两个字符不同,故选c。
28.A
答案解析
发现21行k的取值不会是1,那么14行包含的所有的下标都不会是1,后续计算不会受影响。
29.B
答案解析
f[i]=(1+num_1)(1+num_2) …… (1+num_m),所以f[i]一定包含c[i* k]= c[i]+1 = num_1 +1,能够整除。
30.B
答案解析
举个例子即可,g[8]=1+2+4+8,g[9]=1+3+9。
31.A
答案解析
线性筛全家桶套餐,整体也是线性的。
32.C
答案解析
含有2个约数就是质数,数质数即可。
33.C
答案解析
直到数组的概念后,直接算得结果。
34.D
答案解析
需要搞明白c的含义,c是表示出圈的人数,那么如果c没有到n-1,即剩下一个人,就继续循环。
35.C
答案解析
需要搞明白p的含义,F[i] =1;明显提示是出圈的情况,那么我们要知道p什么时候出圈,这里明显p需要在01之间反复横跳,且最开始p为o,那么应该是p为1时出圈。
36.C
答案解析
出圈后自然想到的是出圈人数的更新。
37.D
答案解析
每次找到没有出圈的人我们必定干什么?肯定是更新报数状态,这里可能有同学会将其与3搞混。
38.B
答案解析
循环里面出圈这个操作已经有了,那么自然会想到还剩下一个必要操作是移动考虑的位置,这里注意到是一个环,需要考虑出界问题。
39.B
答案解析
排序的规则函数,如果搞清楚步骤4的操作,那么知道我们的排序需要能二分出特定坐标,与x,y有关。
40.D
答案解析
排序后去重的基本操作,即使看选项应该也很好理解。
41.C
答案解析
二分查找的基本框架代码。
42.B
答案解析
因为排序固定了,那么根据二分查找原理,我们知道p比A[mid]大时才会更新左边界,这里貌似两个选项都可以。
43.D
答案解析
这里大多数跟坐标有关系,我们可以思考,如果去掉条件会出现什么问题,不难发现一个矩形会被重复算四次(四种对角情况),于是这个条件的目的是防止重复,D能保证一个是左下角一个是右上角。