备考| 2021年CSP入门组初赛真题及真题解析

2021CSP-J初赛真题解析

一、单项选择题

1.

答案:D

解析:C语言是面向过程的,其他三项是面向对象的。

2.

答案:B

解析:常识题,图灵奖是计算机领域的。

奥斯卡奖电影类奖项

诺贝尔奖的五个奖项,包括:物理学奖、化学奖、和平奖、生理学或医学奖和文学奖

普利策奖是新闻领域的国际最高奖项

3.

答案:A

解析:计算机内使用二进制进行储存。

4.

答案:C

解析:设第一个数为max并将其依次和之后的n-1个数进行比较并取较大值即可,比较次数为n-1。

5.

答案:D

解析:c,d出栈后,栈内元素从栈底到栈顶为a,b,a的出栈顺序必然在b之后。

6.

答案:D

解析:树的边数为n-1,故需删去m-(n-1)条边。

7.

答案:C
解析:

8.

答案:A

解析:高度为5的完全二叉树的底层结点个数在[1,16]内,故有16种不同的形态。

9.

答案:B

解析:后缀表达式为 两个操作数在前 操作符在后的形式。

10.

答案:B

解析:先按照“区分队伍的编号”来计算,然后再除去三个队伍的排列即可。C(6,2)×C(4,2)×C(2,2)÷A(3,3)=15

11.

答案:B

解析:哈夫曼编码采用了贪心策略。

12

答案:A

解析:分类讨论:

·第一位放3,后两位各可选放1或2共有2×2=4种;

后两位是相同的数,则有2种方案 3 11  3 22

后两位是不同的数,则有2种方案A(2,2)  3 12  3 21

·第一位放1或2,后两位可选择:

放两个不同的数,有A(3,2)=6种  (1,2,3)中选两个数

放两个相同的数,有1种。

综上,共有4+(6+1)×2=18种。

13.

答案:C

解析:手算即可:7×5×3×2×1=210.

14.

答案:B

解析:共有三种可能的遍历顺序:

第一种:abdce

第二种:acdbe

第三种:acedb

故最后一个遍历到的点有2种可能。

15.

答案:B

解析:

贪心算法,为节约时间,令4,8过河,1, 2驶船从B返回A。

最优方案之一:1,2过河,1返回,4,8过河,2返回,1,2过河。总耗时为2+1+8+2+2=15。

典型错解:让1当船夫渡另外三人过河,得出耗时8+1+4+1+2=16。

二、阅读程序

(1)

分析:f(x)返回二进制表示下x中1的个数,g(x)返回二进制表示下x中最低位的1所对应的2的幂。

16.

答案:F

解析:n=1001时,第22行会进行cin>>a[1000];而数组a的下标范围是[0,999],会发生下标越界。

17.

答案:F

解析:由程序功能可知,负数和0并不会使程序陷入死循环。

18.

答案:F

解析:对于a[4]=(10)10=(1010)2,有f(x)=2,g(x)=2,题面中输出结果为5,故错误。

19.

答案:T

解析:(511998)10=(1111100111111111110)2,算得f(x)=16,g(x)=2,正确。

20.

答案:F

解析:移动后在调用g(a[i])时会提示g函数未声明,无法在主函数中使用。

21.

答案:B

解析:由65536=216,2147483647=231-1得:

(一65536)10在二进制下的表示为16个1接16个0,

(2147483647)10在二进制下的表示为1个0接31个1,算得f(-65536)=16,g(65536)=65536,f(2147483647)=31,g(2147483647)=1.

(2)

分析:解密所给字符串。

加密原理为将3个字符(共3×8=24位)拆开成4个6位表示的小字符。

解密原理为将4个字符 合成 3个 8位表示的 大字符。

22.

答案:F

解析:题面描述为小字符的取值范围,此程序进行解密过程,输出的字符串可由任意字符构成。

table的有效下标是a-z,A-z,0’-9’,+,/,=,值是0-63。0-63进行decode里的各种位运算不一定还是a-z,A-z,'0'-9’,+,/,=(例如第27题有空格)

23.

答案:T

解析:程序仅对字母、数字、“+”、“/”、“=”这64种字符进行了区分,只有输入由a-z,A-z,0'-9’,+,/,=组成的字符串时,table的内容才会是0-63。其他所有字符都会被看作同一字符,table的值一律是0xff。因此输出很有可能相同。

24.

答案:T

解析:可以看到table的0号下标(或者看base的内容是0的位置),在上面的表格里不存在,因此table[0]是默认的0xff。因为这是8位的char,因此确实是-1。

1的源码00000001,反码11111110,补码1111111。负数是用补码存的。

25.

答案:B

解析:观察程序得,encode中只有一个O(n)的循环,循环内部为简单运算和string的+=操作。

26.

答案:B

解析:手算即可。

27.

答案:C

解析:根据输入字符串长度为12,末尾有1个“=”可知:输出字符串长度为8,故排除AB。CD选项的差别仅在最后一位,只需相应地根据输入字符串中的jE部分计算出最后一位即可。

(3)

分析:该代码是线性筛法,不仅仅只求了质数,还求出了f数组和g数组,题目中的f数组 求的是 每个数的约数的个数,g数组求的是约数的和

如果第一次看到这个程序,程序本身较难读懂,可以从2开始多找几个点算一算帮助理解。

28.

答案:T

解析:f[1],g[1]在x=1以外的情况下用不到。

29.

答案:F

解析:不会出现。c[i]记录的值为i的最小质因子的次数+1,即f[i]的一个因子。在f[i*k]=f[i]/c[i*k]*(c[i*k]+1)中,带入c[i*k]=c[i]+1得:f[i*k]=f[i]/(c[i]+1)*(c[i]+2),起到将f[i]中的因子c[i]+1替换为c[i]+2的效果,不会出现除不尽需要下取整的情况。

30.

答案:F

解析:可以简单地找出反例如:g[4]=7,9[5]=6。

31.

答案:A

解析:在第二层循环内部,a[i*k]=1起到了筛合数的效果,而合数i×k只会在这一种情况(k是其最小的质因子)下被筛去(其他情况下,如i×k=i'×k',因为k'不是最小的质因子,因此在i'的循环进行到k'之前就会break),所以时间复杂度是(n)的。

32.

答案:C

解析:f[i]=2说明i是质数,100以内质数有25个。

33.

答案:C

解析:1000=23×53,故f[1000]=16,g[1000]=2340.

三、完善程序

(1)

本题是经典的约瑟夫环问题,难度属于中等,重点考察思维,需要一层一层的逻辑分析。

34

答案:D

解析:变量c记录离开的人数,需要循环至c=n-1为止。

35.

答案:C

解析:p记录当前的人报的数,如果报的是1则离开。

36.

答案:C

解析:更新离开的人数。

37.

答案:D

解析:交替报0或1。

38.

答案:B

解析:i表示当前报数的人,故应该从0-(n-1)绕圈循环进行。

(2)

题目解析:通读程序后发现题目在有二分binary_search,因此是在找什么东西。观察64,65行,推断这里的循环是在枚举任意两点i,j,也就是枚举任意两点作为矩形对角线上的两点,再寻找另外一条对角线上的两点存不存在。

39.

答案:B

解析:按照横纵坐标对所有点进行排序。有争议的是D选项,看时候相等的时候还要根据id排序,在下面二分查找的过程中,比较的就是两个点的坐标,如果mid的坐标小则往大了找,所以排序也是按照坐标从小到大排序的

假如还要按照坐标 比较 ,那么mid的id一定比p的id小,

极端情况,如果有两个元素,要找到的就是A[0], a = 0,b = 1

但是比较的时候仍然返回true,  a = mid+1=1,程序结束后相当于把答案直接跳过去了。就找不到答案了。

40.

答案:D

解析:unique函数起到删去多余的点的效果,如果该点是第一个点,则保留,否则判断该点和前一个点坐标是否完全相同,是则舍去,否则保留。

41.

答案:C

解析:往小了找的时候 赋值的是mid,所以是向下取整。

A选项计算结果错误(如a=3,b=4,得mid=5)。

当数据量为奇数时,BCD都可以,当数据量为偶数时,BD选项均可能出现选点错误/进入死循环的情况。

42.

答案:B

解析:点是按照坐标升序排的(即cmp(A[i],A[i+1])==1),二分时也用同样的方式进行比较:若cmp(A[mid],p)==1,则p点一定在mid右侧。

43.

答案:D

解析:后文中二分查找的点是矩形的左上顶点和右下顶点,故前两层循环起到枚举左下顶点和右上顶点的效果,防止重复枚举。

 有更多问题可添加微信留言咨询:mssg1992

猜你喜欢

转载自blog.csdn.net/Andy__cheng/article/details/126796692