CCF编程能力等级认证GESP—C++8级—20240629

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

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

A. 24 
B. 48 
C. 32 
D. 12

正确答案:B

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

A. 11121
B. 11122 
C. 11211 
D. 11112

正确答案:A

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

A. 180
B. 120 
C. 80 
D. 100

正确答案:D

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

A. O(V)
B. O(E)
C. O(V + E)
D. O(log(V + E))

正确答案:C

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

A. 2 3 \frac{2}{3} 32
B. 1 4 \frac{1}{4} 41
C. 1 2 \frac{1}{2} 21
D. 1 3 \frac{1}{3} 31

正确答案:C

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

A. 544
B. 546 
C. 564 
D. 602

正确答案:A

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

A. 4.25
B. 4.125 
C. 4.5 
D. 4.75

正确答案:B

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互质的数的个数,我们称为欧拉函数,记作 φ ( n ) φ(n) φ(n),下面说法错误的是( )。

A. 如果n是质数,那么 φ ( n ) = n − 1 φ(n) = n - 1 φ(n)=n1
B. 两个质数一定是互质数。
C. 两个相邻的数一定是互质数。
D. 相邻的两个质数不一定是互质数。

正确答案:D

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

A. 4 
B. 5 
C. 6 
D. 3

正确答案:A

12、二项展开式 ( x + y ) n = x n + n x n − 1 y + n ( n − 1 ) 2 x n − 2 y 2 + . . . + y n (x + y)^n = x^n + nx^{n-1}y + \frac{n(n-1)}{2}x^{n-2}y^2 + ... +y^n (x+y)n=xn+nxn1y+2n(n1)xn2y2+...+yn的系数,正好满足杨辉三角的规律。当n = 10时,二项式展开式中 x y 9 xy^9 xy9项当系数是( )。

A. 5 
B. 9 
C. 10 
D. 8

正确答案:C

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

bool notPrime[N] = {false};
void sieve(){
for (int n = 2; n * n < N; n++)
    if (!notPrime[n])
        for (int i = n * n; i < N; i += n)
            notPrime[i] = true;
}

A. O ( N ) O(N) O(N)
B. O ( N l o g N ) O(NlogN) O(NlogN)
C. O ( N l o g l o g N ) O(NloglogN) O(NloglogN)
D. O ( N 2 ) O(N^2) O(N2)

正确答案:C

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

int gcd(int m, int n) {
    if (m == 0)
        return n;
    return gcd(n % m, m);
}

A. O ( n ) O(\sqrt{n}) O(n )
B. O ( l o g ( n ) ) O(log(n)) O(log(n))
C. O ( n ) O(n) O(n)
D. O ( 1 ) O(1) O(1)

正确答案:B

15、下面程序的输出为( )。

#include <iostream>
using namespace std;
int main() {
    int cnt = 0; 
    for(int x = 0; x <= 10; x++)
        for (int y = 0; y <= 10; y++)
            for (int z = 0; z <= 10; z++)
                if (x + y + z <= 15)
                    cnt++;
    cout << cnt << endl;
    return 0; 
}
A. 90 
B. 91 
C. 710 
D. 711

正确答案:D

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

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

正确答案:正确

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

正确答案:错误

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

正确答案:正确

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

正确答案:正确

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

正确答案:正确

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

正确答案:错误

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

正确答案:错误

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

正确答案:正确

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

正确答案:错误

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

正确答案:错误

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

最远点对

【问题描述】
小杨有一棵包含n个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。
小杨想知道相距最远的一对不同颜色节点的距离是多少。
【输入描述】
第一行包含一个正整数n,代表树的节点数。
第二行包含n个非负整数 a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1,a2,...,an (对于所有的 1 < = i < = n 1 <= i <= n 1<=i<=n ,均有 a i a_i ai等于0或1),其中如果 a i = 0 a_i = 0 ai=0 ,则节点i的颜色为白色;如果 a i = 1 a_i = 1 ai=1,则节点i的颜色为黑色。
之后n - 1行,每行包含两个正整数 x i , y i x_i, y_i xi,yi,代表存在一条连接节点 x i x_i xi y i y_i yi的边。
保证输入的树中存在不同颜色的点。
【输出描述】
输出一个整数,代表相距最远的一对不同颜色节点的距离。
【样例输入 1】
5
0 1 0 1 0
1 2
1 3
3 4
3 5
【样例输出 1】
3
【样例解释】
相距最远的不同颜色的一对节点为节点2和5。
【数据范围】

子任务编号数据点占比n a i a_i ai特殊条件
130% < = 1 0 5 <=10^5 <=1050 <= a i a_i ai <= 1树当形态为一条链
230% < = 1 0 3 <=10^3 <=1030 <= a i a_i ai <= 1
340% < = 1 0 5 <=10^5 <=1050 <= a i a_i ai <= 1

对于全部数据,保证有 1 < = n < = 1 0 5 , 0 < = a i < = 1 1 <= n <= 10^5, 0 <= a_i <= 1 1<=n<=105,0<=ai<=1

空间跳跃

【问题描述】
小杨在二维空间中有n个水平挡板,并且挡板之间彼此不重叠,其中第i个挡板处于水平高度 h i h_i hi,左右端点分别位
l i l_i li r i r_i ri
小杨可以在挡板上左右移动,当小杨移动到右端点时,如果再向右移动会竖直掉落,从而落到下方第一个挡板上,
移动到左端点时同理。小杨在挡板上每移动1个单位长度会耗费1个单位时间,掉落时每掉落1个单位高度也会耗
费1个单位时间。
小杨想知道,从第s个挡板上的左端点出发到第t个挡板需要耗费的最少时间是多少?
注意:可能无法从第s个挡板到达到第t个挡板。
【输入描述】
第一行包含一个正整数n,代表挡板数量。
第二行包含两个正整数s, t,含义如题面所示。
之后n行,每行包含三个正整数 l i , r i , h i l_i, r_i, h_i li,ri,hi,代表第i个挡板的左右端点位置与高度。
【输出描述】
输出一个整数代表需要耗费的最少时间,如果无法到达则输出-1 。
【样例输入 1】
3
3 1
5 6 3
3 5 6
1 4 100000
【样例输出 1】
100001
【样例范围】
耗费时间最少的移动方案为,从第3个挡板左端点移动到右端点,耗费3个单位时间,然后向右移动掉落到第2个 挡板上,耗费 100000 - 6 = 99994个单位时间,之后再向右移动1个单位长度,耗费1个单位时间,最后向右移动掉落到第1个挡板上,耗费3个单位时间。共耗费3 + 99994 + 1 + 3 = 100001个单位时间。
【数据范围】

子任务编号数据点占比n特殊条件
120% < = 1000 <=1000 <=1000 l i = 1 l_i = 1 li=1
240% < = 1000 <=1000 <=1000 l i = i , r i = i + 1 l_i = i, r_i = i + 1 li=i,ri=i+1
340% < = 1000 <=1000 <=1000

对于全部数据,保证有 1 < = n < = 1000 , 1 < = l i < = r i < = 1 0 5 , 1 < = h i < = 1 0 5 1 <= n <= 1000, 1 <= l_i <= r_i <= 10^5, 1 <= h_i <= 10^5 1<=n<=1000,1<=li<=ri<=105,1<=hi<=105

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青岛少儿编程-王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值