四时宝库

程序员的知识宝库

GESP第六次认证真题解析|C++八级真题回顾

GESP2024年6月认证C++八级


一、单选题(每题2分,共30分)

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

B

A

D

C

C

A

B

B

D

D

A

C

C

B

D


1、GESP活动期间,举办?从获胜者ABCDE五个?中选出三个?排成?队升国旗,其中A不能排在队?,请问有多少种排法?

A. 24

B. 48

C. 32

D. 12

【答案】B

【考纲知识点】数学知识

【解析】排列组合问题。A不能排队首,因此第一位有4种选法;第二位不能与第一位相同,因此有4种选法;第三位不能与前两位相同,有3种选法;共计4*4*3=48种。


2、7进制数235转换成3进制数是( )。

A. 11121

B. 11122

C. 11211

D. 11112

【答案】A

【考纲知识点】进制转换

【解析】先将235转换成十进制124,然后再转换成3进制即可。


3、0,1,2,3,4,5这些数字组成?个三位数,请问没有重复数字的情况下,有多少种组法( )。

A. 180

B. 120

C. 80

D. 100

【答案】D

【考纲知识点】数学知识

【解析】一共6个数字,百位不能为0,因此有5种可能;然后再选2个数字排列,就是P(5,2),答案是5*P(5,2)=100


4、有V个顶点、E条边的图的深度优先搜索遍历时间复杂度为( )。

A. O(v)

B. O(E)

C. O(V+E)

D.O(log(V + E))

【答案】C

【考纲知识点】图的知识

【解析】每个顶点每条边都会被访问一次,所有时间复杂度是C。


5、?对夫妻生男生女的概率相同。已知这对夫妻有两个孩?,其中?个是女孩,另?个是男孩的概率是多少?

A.?

B.?

C.?

D.?

【答案】C

【考纲知识点】数学知识

【解析】概率知识。每次男孩和女孩的概率都是1/2。


6、从1到2024这2024个数中,共有( )个包含数字6的数。

A. 544

B. 546

C. 564

D. 602

【答案】A

【考纲知识点】数学知识

【解析】

1位数字,只有1个6。

2位数字,有6的情况是6*,*表示0到9,共10种;*6,*表示1-9(除掉6),共8种,所以两位数有6的共18种。

3位数字,有6的情况,1位数字6,十位补0,*06,*表示1-9(除掉6),有8种;两位数前面加数字1-9(除掉6),

*(含6),8*18=144,百位是6的有600-699,共100个数字,总计100+144+8=252种。

同理1000-1999,1位数补成4位数,1006;2位数补成10(含6),3位数前面加1,有1+18+252=271种。

2000-2024有2个含数字6的数字,总数是1+18+252+271+2=544.


7、二进制数100.001转换成十进制数是( )。

A. 4.25

B. 4.125

C. 4.5

D. 4.75

【答案】B

【考纲知识点】数学知识

【解析】进制转换知识,100=1*22;0.001=1*2-3。


8、以下函数声明,哪个是符合C++语法的?( )。

A. void BubbleSort(char a[][], int n);

B. void BubbleSort(char a[][20], int n);

C. void BubbleSort(char a[10][], int n);

D. void BubbleSort(char[,] a, int n);

【答案】B

【考纲知识点】语法知识

【解析】考察的是二维数组定义的知识。二维数组第二维长度必须确定。


9、下?有关C++重载的说法,错误的是( )。

A.两个参数个数不同的函数可以重名。

B.两个参数类型不同的函数可以重名。

C.两个类的?法可以重名。

D.所有C++运算符均可以重载。

【答案】D

【考纲知识点】语法知识

【解析】不能重载的运算符还是挺多的。“::”、“.”、“?:”等。



10、小于或等于给定正整数n的数中,与n互质的数的个数,我们称为欧拉函数,记作。下?说法错误的是( ) 。

A.如果n是质数,那么?(n)=n-1。

B.两个质数?定是互质数。

C.两个相邻的数?定是互质数。

D.相邻的两个质数不?定是互质数。

【答案】D

【考纲知识点】数学知识

【解析】两个不同的质数是互质数。


11、已知?棵?叉树有10个节点,则其中至多有( )个节点有2个子节点。

A. 4

B. 5

C. 6

D. 3

【答案】A

【考纲知识点】树的知识

【解析】可以画图模拟一下,最多是4个。设度为0的结点数为n0,度为1的结点数为n1,度为2的结点数为n2,由题意:

n0+n1+n2=10。在二叉树中有:n0=n2+1;所以有2*n2+n1=9;所以n1的值为奇数,最小的值为1,所以n2=4。


12、?项展开式

的系数,正好满?杨辉三角的规律。当n=10时,?项式展开式中xy9项的系数( )。

A. 5

B. 9

C. 10

D. 8

【答案】C

【考纲知识点】组合数

【解析】该项系数应为C(10, 1)=10。


13、下?程序的时间复杂度为( )。

A. O(N)

B. O(N x log N)

C. O(N x loglog N)

D.O(N2)

【答案】C

【考纲知识点】数学知识

【解析】代码是求欧拉筛,参数有些优化,时间复杂度是C。


14、下?程序的最差时间复杂度为( )。

A.

B. O(log(n))

C. O(n)

D. O(1)

【答案】B

【考纲知识点】数学知识

【解析】欧几里得算法的最坏时间复杂度。在最坏的情况,m和n为菲波那切数列中相邻的两项,所以时间复杂度是O(logn)。


  1. 下?程序的输出为( )。

A. 90

B. 91

C. 710

D. 711

【答案】D

【考纲知识点】数学知识

【解析】x=0,y=0时,z的取值是[0,10];x=0时,y=1到5,z的取值是[0,10];依次递推,x=0时,y最大等于10,的结果是11+11+…+6=106。同样枚举x=1时y和z的情况,累加得到结果。


  1. 判断题 (每题 2 分,共 20 分)

题号

1

2

3

4

5

6

7

8

9

10

答案

×

×

×

×

×


1、ABCDE五个?朋友,排成?队跑步,其中AB两?必须排在?起,?共有48种排法。

【答案】对

【考纲知识点】数学知识

【解析】排列组合捆绑法。AB在一起,看成1个人,AB和BA共2中情况,所以是排队是:2*A(4,4)=48。


2、已知double类型的变量a和b,则执行语句a = a + b; b = a - b; a = a - b; 后,变量a和b的值会互换。

【答案】错

【考纲知识点】语法知识

【解析】a和b是double类型,加减会造成精度的损失,导致2个变量值不能互换。


3、?个袋子中有3个完全相同的红?小球、2个完全相同的蓝?小球。每次从中取出1个,再放回袋?,这样进行3次后,可能的颜?顺序有8种。

【答案】对

【考纲知识点】数学知识

【解析】0代表红色,1代表蓝色,情况是:000 001 010 011 100 101 110 111 。每个位置都有2种选择,所以是2*2*2=8.


4、已知int类型的变量a和b中分别存储着?个直角三角形的两条直角边的长度,则斜边的长度可以通过表达式sqrt(a * a + b * b) 求得。

【答案】对

【考纲知识点】数学知识

【解析】根据勾股定理求出。


5、在?个包含v个顶点、e条边的带权连通简单有向图上使?Dijkstra算法求最短路径,时间复杂度为O(v2),可进?步优化?O(e+vlog(v))。

【答案】对

【考纲知识点】最短路径知识

【解析】暴力枚举每个点,时间复杂度是O(v2);用优先队列每次找到距离最短的点,优先队列时间复杂度是O(logn),每个点和边都访问一次,所以时间复杂度是O(e+vlogv)。


6、在N个元素的?叉排序树中查找?个元素,最差情况的时间复杂度是O(logN)。

【答案】错

【考纲知识点】树的知识

【解析】二叉排序树最坏的情况退化成1条链,时间复杂度是O(n)。


7、C++语?中,可以为同?个类定义多个析构函数。

【答案】错

【考纲知识点】面向对象知识

【解析】析构函数只能有1个。


8、使?单链表和使用双向链表,查找元素的时间复杂度相同。

【答案】对

【考纲知识点】数据结构知识

【解析】查找的时间复杂度不变。都是从某个方向开始一直遍历查找。


9、为解决哈希函数冲突,可以使?不同的哈希函数为每个表项各建??个?哈希表,用来管理该表项的所有冲突元素。这些?哈希表?定不会发?冲突。

【答案】错

【考纲知识点】算法知识

【解析】子哈希表仍然可能产生冲突。


10、要判断?向图的连通性,在深度优先搜索和?度优先搜索中选择,深度优先的平均时间复杂度更低。

【答案】错

【考纲知识点】图的知识

【解析】都需要对每个点遍历一次,总时间复杂度不会有差距。可能在其他方面开销有区别,例如辅助空间等方面。


三、编程题(每题25分,共50分)

题号

1

2

答案




1、最远点对

题面描述

小杨有?棵包含n个节点的树,这棵树上的任意?个节点要么是??,要么是黑色。

小杨想知道相距最远的?对不同颜?节点的距离是多少。

输入格式

第一行包含一个正整数n,代表树的节点数。

第二行包含几个非负整数a1,a2,……,an(对于所有的1≤i ≤n,均有a等于0或1),其中如果ai= 0,则节点i的颜色为白色;如果ai=1,则节点的颜色为黑色。

之后n-1行,每行包含两个正整数xi,yi,代表存在一条连接节点xi和yi的边。

保证输入的树中存在不同颜色的点。

输出格式

输出一个整数,代表相距最远的一对不同颜色节点的距离。

样例1

样例解释

数据范围

对于全部数据,保证有1≤n≤105,0≤ai≤1。

【题目大意】

这是一个树结构,从树中选2个颜色不同的点,颜色分为黑色和白色。求最远的距离。分析样例。1、先建立树;2、选2个颜色不同的点,求最远距离。例如1是白色,2是黑色,距离是1.通过枚举,发现2是黑色,5是白色,距离是3,是答案。

【考纲知识点】

建树知识,深搜知识

【解题思路】

每个结点要么黑色要么白色,需要保存结点的颜色信息。选2个颜色不同的点,可以先枚举第1个点和第2个点,求他们的距离,再求最大值。任意2点都是连通的,能够相互访问,能求出最大值。根据数据范围,能得到部分分。另一种思路就是根据树的性质,答案的2个点假设是a和b,路径会经过他们的公共祖先,距离=公共祖先到a的距离+公共祖先到b的距离。每个点视为公共祖先的话,有可能是左孩子的黑色和右孩子的白色组合,也可能是左孩子的白色和右孩子的黑色组成,也可能只在左孩子或者右孩子中。所以,每个结点应该保留2种颜色的最远值。一次深搜即可。每个点访问1次,时间复杂度是O(n)。

参考程序


2、空间跳跃

题面描述

小杨在二维空间中有n个水平挡板,并且挡板之间彼此不重叠,其中第i个挡板处于水平高度hi,左右端点分别位于li与ri。

小杨可以在挡板上左右移动,当小杨移动到右端点时,如果再向右移动会竖直掉落,从而落到下方第一个挡板上,移动到左端点时同理。小杨在挡板上每移动1个单位长度会耗费1个单位时间,掉落时每掉落1个单位高度也会耗费1个单位时间。

小杨想知道,从第s个挡板上的左端点出发到第t个挡板需要耗费的最少时间是多少?

注意:可能无法从第s个挡板到达到第t个挡板。

输入格式

第一行包含一个正整数n,代表挡板数量。

第二行包含两个正整数s,t,含义如题面所示。

之后n行,每行包含三个正整数li,ri,hi,代表第i个挡板的左右端点位置与高度。

输出格式

输出一个整数代表需要耗费的最少时间,如果无法到达则输出-1。

样例1

样例解释

耗费时间最少的移动方案为,从第3个挡板左端点移动到右端点,耗费3个单位时间,然后向右移动掉落到第2个挡板上,耗费100000-6=99994个单位时间,之后再向右移动1个单位长度,耗费1个单位时间,最后向右移动掉落到第1个挡板上,耗费3个单位时间。共耗费3+99994+1+3=100001个单位时间。

数据范围

对于全部数据,保证有1≤n ≤1000,1 ≤li≤ri≤105,1≤hi≤105。

【题目大意】

在二维空间里描述每个挡板有3个信息,左右端点和高度。根据测试样例,画出3个挡板的信息。1号挡板不一定在最上面,根据数据判断。3号挡板从1移到4,不能直接掉到1号挡板。先掉到2号挡板,再掉到1号挡板。

【考纲知识点】

建图知识,最短路径

【解题思路】

发现n的数据范围是1000,求的是从1个挡板到另外1个挡板。注意,掉到目标挡板中的某个位置即可。同时1个挡板左端到右端或者右端到左端算距离,其他挡板的2个端点只要能垂直相交到下一个挡板(中间没有其他挡板阻碍),也算相连。将这些端点和相交点看成结点,相连看成边,整个结构就成为一张图的结构。起点是固定的,终点也是固定的(只要是目标挡板的某个点即可),求的就是最短路径。数据都是正整数,可以用dijkstra算法实现。

难点1在于建图。一个挡板左右算2个结点,要连边;一个挡板的左右两端能够垂直到其他挡板,中间不能有间隔,要连边。

难度2就是dijkstra算法的完成。按照优先队列的模板完成即可。

参考程序

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接