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

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一