2024年3月GESP等级认证Python编程八级真题及答案

2024-03-18 13:44

本文主要是介绍2024年3月GESP等级认证Python编程八级真题及答案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

C

D

B

A

B

C

C

B

C

D

A

A

B

D

C

第 题  下列代码中 ,⽤到的算法是什么算法 ,去掉存储的空间 ,算法本⾝⽤到的空间复杂度是多少  ()

  A.  二分法 ,  O(log2N)

  B.  二分法 , O(N)

  C.  折半查找 ,  O(1)

  D.  折半查找   O(N log2N)

第  ⽆向图的临接矩阵存储⽅法中 ,下列描述正确的是  

  A.  对角矩阵

  B.  稀疏矩阵

  C.  非对称矩阵

  D.  对称矩阵

第  下列代码依次输⼊10,3,2 ,结果是  

来源:6547网 http://www.6547.cn/doc/msitz6u6rp 

  A.  23

  B.  120

  C.  16

  D.  155

第  ⼀个等边五边形 ,每个顶点上有⼀个蚂蚁 ,蚂蚁沿着五边形的边严格匀速⾏⾛ ,⽅向随机 请问 ,开始⾛以  ,蚂蚁两两不相碰的概率是多少  

  A.  1/16

  B.  1/4

  C.  1/32

  D.  1/8

第  ⼀根长度为1的⼩⽊棒 ,随机的折成三段 ,请问这三段能够组成⼀个三角形的概率是多少   

  A.  1/3

  B.  1/4

  C.  1/8

  D.  1/2

第  有北京 ,雄安 ,天津三个城市, 同样两个城市之间来回票价⼀样 。请问⽕车售票部门需要准备⼏种车票 ,⼏ 种票价  

  A.  3,3

  B.  6,6

  C.  6,3

  D.  3,6

第  对于如下图的⽆向图 ,在⽤Prim算法以节点F作为起点⽣成最⼩树的过程中 ,哪个选项不是产⽣最⼩树的中 间状态   

A.

B.

C.

D.

第  对于⼀棵是完全⼆叉树的排序⼆叉树 ,其平均搜索的时间复杂度为() 

 A0 )

0 B0(log n)

0 C. 0()

 D. 0(n2)

第  关于快速幂 ,下列说法错误的是  

  A. 使⽤了倍增思想

 B. 每⼀步都把指数分成两半 ,⽽相应的底数做平⽅运算

  C. 时间复杂度为 。(NlogN)

0 D. 可以⽤快速幂⽅法计算斐波那契数列的第 N 

第 10 题  下⾯实现杨辉三角形的程序中 ,横线处填写正确的是  

A.  z = triangles(x, y-1) + triangles(x, y)

B.  z = triangles(x-1, y+1) + triangles(x-1, y-1)

C.   z = triangles(x-1, y-1) + triangles(x, y)

D.  z = triangles(x-1, y-1) + triangles(x-1, y)

第 11 题  设有编号为1 2 3 4 5的五个球和编号为1 2 3 4 5的盒⼦ ,现将这5个球投⼊5个盒⼦要求每个盒 ⼦放⼀个球 ,并且恰好有两个球的号码与盒⼦号码相同, 问有多少种不同的⽅法  

A.  20

B.  10

C.  12

D.  24

第 12 题  1名⽼师和4名获奖同学排成⼀排照相留 ,⽼师不站两端的排法下列所列式⼦正确的是() 

口  A. C31A44

  BA31A44

0  C. C31C44

0  D. A31C44

第 13 题  关于赋权图中 ,从某⼀个点出发 寻找最短路径的算法Dijkstra ,下列说法中错误的是  

  A. 算法解决了赋权有向图或者⽆向图的单源最短路径问题

  B. 算法最终得到⼀个最短路径树

  C. 常⽤于路由算法或者作为其他图算法的⼀个⼦模块

  D. 算法采⽤的是⼀种贪⼼的策略

第 14 题  关于图的存储⽅法中 ,下列说法错误的是  

  A. 图的存储结构主要分为:邻接矩阵和邻接表

  B. 图的邻接矩阵存储⽅式是⽤两个数组来表⽰图:⼀个⼀维数组存储图中顶点信息 ,⼀个⼆维数组(邻接矩 阵)存储图中的边或弧的信息。

  C. 对于边数相对顶点较少的图 ,邻接矩阵结构存在对存储空间的极⼤浪费

  D. 如果图中边的数⽬远远⼤于n的平⽅称作稀疏图 ,这是⽤邻接表表⽰⽐⽤邻接矩阵表⽰节省空间

第 15  Dijkstra算法中 ,定义S集合是已求出最短路径的节点集合 ,对于下图中的图 Dijkstra算法的中间形成的S  ,错误的是  

  A.  S={0(3)}

  B.  S={0(3),2(6)}

  C.  S={0(3),2(6),1(5)}

  D.  S={0(3),2(6),1(8)}

2      2  20

    1    2    3    4    5    6    7    8    9    10

答案                          

第 题  线性表可以是空表 ,树可以是空树, 图也可以是空。

第  在具有  个顶点、 条边的⽆向图中, ⽆向图的全部顶点的度的和等于边数的 倍。

第 题  图的任意⼏个点 ,⼏个边都可以组成这个图的⼦图。

第  在具有  个顶点、 条边的有向图中 ,⼊+出度的和是 

第 题  当⼀棵排序⼆叉树退化为单⽀⼆叉树后 ,其平均⽐较次数是  

第 题  不算数据的存储 ,插⼊排序算法的空间复杂度为 

第 题  图的存储⽅式主要有两种:邻接表和邻接矩阵。

第  对于边数相对顶点较少的图 ,使⽤邻接矩阵来存储更好。

第  排列问题与顺序有关 ,组合问题与顺序⽆关。

第 10 题  ⽤分治法可以优化等⽐数列的前  项求和的算法。

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

3.1     编程题 1                                                                                                                                             

  试题名称:公倍数问题

3.1.1     问题描述                                                                                                                                 

⼩ 写了⼀个 N X M 的矩阵 A ,我们看不到这个矩阵 ,但我们可以知道 ,其中第 i ⾏第j列的元素 Ai,j 是 i  j 的 公倍数  。现在有 个⼩朋友 ,其中第 个⼩朋友想知道 ,矩阵 中最多有多少个元 素可以是 k  。请你帮助这些⼩朋友求解。

注意:每位⼩朋友的答案互不相关 ,例如 ,有些位置既可能是  ,⼜可能是  ,则它同可以时满⾜  两名⼩朋友的 要求。

⽅便起见 ,你只需要输出Kk=1 k × ansk 即可 ,其中 ansk 表⽰第 k 名⼩朋友感兴趣的答案。

3.1.2     输入描述                                                                                                                               

第⼀⾏三个正整数N,M, K

3.1.3     输出描述                                                                                                                               

输出⼀⾏ 即 Kk=1 k × ansk 

请注意 ,这个数可能很⼤ ,使⽤ C++语⾔的选⼿请酌情使⽤  long long 等数据类型存储答案。

3.1.4     特别提醒                                                                                                                                 

在常规程序中 ,输⼊ 、输出时提供提⽰是好习惯 。但在本场考试中, 由于系统限定 ,请不要在输⼊ 、输出中附带任 何提⽰信息。

3.1.5     样例输入 1                                                                                                                                                       

3.1.6     样例输出 1

3.1.7     样例解释 1

只有 A1 , 1  可以是 1 ,其余都不⾏。

A1 A12  A2   A2,2  都可以是 2 ⽽其余不⾏

因此答案是 1  ×  1      2  × 4  9

3.1.8     样例输入 2

3.1.9     样例输出 2

3.1.10     数据规模

对于 30 的测试点 保证 NM, K     10

对于 60 的测试点 保证 NM, K  500

对于 100 的测试点 保证 N 105 K

3.1.11     参考程序

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

def count_divisors(limit, num):

s = [0] * (num + 1)

for i in range(1, limit + 1):

for j in range(i, num + 1, i):

s[j] += 1

return s

def main():

NMK = map(int, input().split())

s_N = count_divisors(N, 10 ** 6)

s_M = count_divisors(M, 10 ** 6)

result = 0

for k in range(1K + 1):

result += k * s_N[k] * s_M[k]

print(result)

if __name__ == "__main__":

main()

3.2     编程题 2

  试题名称:接⽵竿

3.2.1     题面描述

⼩杨同学想⽤卡牌玩⼀种叫做接⽵竿 的游戏。

游戏规则是:每张牌上有⼀个点数  ,将给定的牌依次放⼊⼀列牌的末端 。若放⼊之前这列牌中已有与这张牌点数相 同的牌 ,则⼩杨同学会将这张牌和点数相同的牌之间的所有牌全部取出队列(包括这两张牌本⾝) 

⼩杨同学现在有⼀个长度为  的卡牌序列 A ,其中每张牌的点数为 Ai  。⼩杨同学有 次询问 。第    ( )  询问时 ,⼩杨同学会给出 iTi ,⼩杨同学想知道如果⽤下标在 [li  Ti的所有卡牌按照下标顺序玩接⽵  竿 的游戏 ,最后队列中剩余的牌数。

3.2.2     输入格式

第一行包含一个正整数 T ,表示测试数据组数。

对于每组测试数据 ,第一行包含一个正整数 ,表示卡牌序列 A 的长度。

第二行包含  个正整数 A1  A2 An ,表示卡牌的点数 A

第三行包含一个正整数 q ,表示询问次数。

接下来  ,每行两个正整数 i  Ti ,表示一组询问。

3.2.3     输出格式

对于每组数据 ,输出  。第  输出一个非负整数 ,表示第 i 次询问的答案。

3.2.4     样例 1

1

2

3

4

5

6

7

8

1

6

1 2 2 3 1 3

4

1 3

1 6

1 5

5 6

1

2

3

4

1

1

0

2

3.2.5     样例解释

对于第一次询问 ,小杨同学会按照 1 , 2  2  的顺序放置卡牌 ,在放置最后一张卡牌时 ,两张点数为 2  的卡牌会被收 走, 因此最后队列中只剩余一张点数为  的卡牌。

对于第二次询问, 队列变化情况为:

{}  {1}  {1 , 2}  {1 , 2 , 2}  {1}  {1 , 3}  {1 , 3, 1}  {}  {3}  因此最后队列中只剩余张点数为 3 的卡 牌。

3.2.6     数据范围

子任务编号   数据点占比    T          n                  q           max Ai              特殊条件

1                     30           

5        

100            13

2                     30           

5   1

5  ×  104  ≤  1

5 ×  104      13

所有询问的右端点等于n

3                     40           

5    1

5  ×  104  ≤  1

5 ×  104      13

对于全部数据 保证有 1   T  5 1   n   1 . 5  ×  104   

3.2.7     参考程序

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

n = int(input())

= int(math.log(n, 2)) + 1

= list(map(int, input().split()))

pos = {}

nxt = [[n for i in range(+ 1)] for j in range(n)]

for i in range(n - 1, -1, -1):

if not (A[i] in pos):

nxt[i][0] = n

else:

nxt[i][0= pos[A[i]]

pos[A[i]] = i

for i in range(n - 1, -1, -1):

for j in range(1, m + 1):

if nxt[i][j - 1+ 1 < n:

nxt[i][j= nxt[nxt[i][j - 1+ 1][j - 1]

Q = int(input())

for q in range(Q):

lr = map(int, input().split())

l, r = l - 1, r - 1

x, ans = l, 0

while x <= r:

while x <= r and nxt[x][0] > r:

x, ans x + 1, ans + 1

if x > r:

break

for i in range(m, -1, -1):

if nxt[x][i] <= r:

x = nxt[x][i]

break

x += 1

print(ans)

这篇关于2024年3月GESP等级认证Python编程八级真题及答案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/822531

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal