zl程序教程

您现在的位置是:首页 >  后端

当前栏目

2021 CCF非专业级别软件能力认证第一轮 (CSP-J)入门级 C++答案及解析

C++认证软件 解析 2021 能力 答案 级别
2023-09-14 09:11:36 时间

试卷下载 浙江J组入围线66分,入围人数共946名,有效参加共5890人。

一、单项选择题

1. 答案:D

解析:C语言是面向过程的,在C语言中没有对象(class)这种概念,C++有STL,就是模版类,当然class也有的。Java、Python也都有class。OI更像c with stl,其实我们做的事情就是面向解决问题的过程,又叫算法。

2. 答案:B

解析:图灵是人工智能之父,有个很著名的人工智能测试叫做图灵测试。

3. 答案:A

解析:送分题,计算机只认0和1。

4. 答案:C

解析:继续送,先选第一个作为最大值,然后比较N-1次。1个数比较0次,特判出来也可以。

5. 答案:D

解析:b不可能比a先出栈,选D

6. 答案:D

解析:树有n-1边,m-(n-1)=m-n+1

7. 答案:C

解析:\(4+1+1* 1/2+1/4=5.75\)

8. 答案:A

解析:完全二叉树种数就是高度为5要填几个,是\(2^{5-1}=16\)

9. 答案:B

解析:后缀表达即把运算符放在后面,如果不会转换,可以带答案,为B

10. 答案:B

解析:先6个里面选2个,再4个里选2个,最后两个2个里选两个。利用乘法原理,但是过程中包含了顺序,需要再除去。
\(C(6,2)*C(4,2)*C(2,2)/A(3,3)=15\)

11. 答案:B

解析:贪心,哈夫曼编码 出现次数多的编码短,这样总长度就短了。

12. 答案:A

解析:分类,第1位放3or第一位放1或2,\(2*2+(6+1)*2=18种\)

13. 答案:C

解析:\(7*5*3*2*1=210\)

14. 答案:B

解析:有abdce、acdbe、acedb三种顺序,有2种可能。

15. 答案:B

解析:1,2过河,1返回。
4,8过河,2返回。
1,2过河。
2+1+8+2+2=15,更一般的情况,挺难的贪心 POJ1700Crossing River

二、阅读程序

1.f(x)实际上是popcount,返回x二进制表示中1的个数,g(x)为lowbit操作,树状数组一个非常经典的操作。取出非负整数n在二进制表示下最低位的1,以及它后面的0构成的数值,也就是最低位的1所对应的2的幂。典中点之 基本数据类型在内存中的存储

1) 答案:F

解析:n=1001,a下标可使用范围[0,999],越界了

2) 答案:F

解析:f(x)使用的是&(x-1),1一定会被去完

3) 答案:F

解析:\(a[4]=10=(1010)_{2}\),有f(x)=2, g(x)=2

4) 答案:T

解析:f(x)=16,g(x)=2,如果没看懂程序,这个不好做。

5) 答案:F

解析:g函数未定义

6) 答案:B

解析:这两个数非常特殊,65536时2的16次方,2147483647是int最大值,全是1。f(-65536)=16,g(65536)=65536,f(2147483647)=31,g(214748367)=1。这个不好做

2.仅包含解密字符串部分,应该我中午发了你们都看到了?当然硬着分析也问题不大。TZOJ7214: Base64编码

1) 答案:F

解析:解密得到的是任意的,没有限定

2) 答案:T

解析:仅包含了大小写字母、数字和"+"和"/"这64种字符和“=”,输入些垃圾字符,就会被忽略掉。

3) 答案:?T

解析:有争议,如果char类型有符号是-1,否则是255。C语言标准没定义,是ub(undefined behavior)。

4) 答案:B

解析:decode只有一个n的循环,string只有添加字符操作

5) 答案:B

解析:手算,不难,去年有彩蛋,今年没有。

6) 答案:C

解析:这个题目会稍微复杂些,你首先要推出输出字符串长度为8,然后再算再分析,这样的题目建议题目全写完后有非常多的时间再做。

3.和素数筛选有关,很像我们上课学的埃斯特尼筛法,他进行了一下优化。上课也提到过,这是欧拉筛(线性筛)。

1) 答案:T

解析:如果x不等于1,f[1],g[1]也用不到

2) 答案:F

解析:c[i]为i的最小质因子的次数+1,即f[i]的一个因子,这个筛法很巧妙的,有兴趣可以了解下,

3) 答案:F

解析:g求因子和,因子和的话

4) 答案:A

解析:这个算法很nb,O(n)的,因为第二重循环循环到要重复的数时就break掉了,也就是不会重复标记多次。

5) 答案:C

解析:数一下100以内的质数个数,2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97共25个

6) 答案:C

解析:看懂了很简单,f求因子个数,g求因子和。\(1000=2^{3}*5^{3}\),因子个数为\((3+1)*(3+1)=16\);因子和的公式比较复杂,自己就手算一下吧。

三、完善程序

1.本题很简单,有做错的出去挨打。我们约瑟夫环写的比这个难。

1) 答案:D

解析:c记录离开的人数,c=n-1作为结束条件

2) 答案:C

解析:p记录当前报的数,报1离开。

3) 答案:C

解析:离开的人数+1

4) 答案:D

解析:交替0和1

5) 答案:B

解析:i表示当前报数的人,需要从0~(n-1)依次

2.二分+枚举,不算难,相对阅读程序来说,这次完善程序很简单。

1) 答案:B

解析:按照横纵坐标排序。

2) 答案:D

解析: unique函数是要删去多余的点,第一个点保留,之后和前一个比,相等就舍去,其实就是离散化的思想,线段求交也能用。

3) 答案:C

解析:这不就是二分嘛,右移就是/2

4) 答案:B

解析:点是按升序排的,也是一样的比较方法,满足则p点在mid右侧

5) 答案:D

解析:前两层循在枚举左下顶点和右上顶点,需要判断i点是不是在j点的左下方。