2023年12月GESP Python三、四级编程题真题解析

news2025/1/19 20:40:59

三、2023年12月GESP Python三级编程题

【三级编程题1

试题名称:小猫分鱼

问题描述

海滩上有一堆鱼,N只小猫来分。第一只小猫把这堆鱼平均分为N份,多了i<N条鱼,这只小猫把多的i条鱼扔入海中,拿走了一份。第二只小猫接着把剩下的鱼平均分成份,又多了i条鱼,小猫同样把多的i条鱼扔入海中,拿走了一份。第三、第四、……,第N只小猫仍是最终剩下的鱼分成N份,扔掉多了的i条鱼,并拿走一份。

编写程序,输入小猫的数量以及每次扔到海里的鱼的数量,输出海滩上最少的鱼数,使得每只小猫都可吃到鱼。

例如:两只小猫来分鱼N=2,每次扔掉鱼的数量为i=1,为了每只小猫都可吃到鱼,可令第二只小猫需要拿走1条鱼,则此时待分配的有3条鱼。第一只小猫待分配的鱼有3*2+1=7条。

输入描述

总共 2 行。第一行一个整数N,第二行一个整数i。保证0<N<10;i<N。

输出描述

一行一个整数,表示满足要求的海滩上最少的鱼数。

分析

设最后的小猫吃到x条鱼(x≥1),所以最后一堆鱼数为x*N+i条,上一堆是本堆的N/(N-1)倍再加i条鱼(丢掉i条鱼,因为拿走1份,剩N-1份),这样上推N-1次,如果每堆都是整数就是结果(满足要求的海滩上最少的鱼数),否则x增1再算。

完整代码

n = int(input())                  # 小猫数
i = int(input())                  # 每次丢掉的鱼数
x = 1                             # 最后一只小猫吃到的鱼数,至少1条
while True:
    ans = x * n + i
    for j in range(1, n):
        if ans % (n - 1):         # 也可用ans % (n - 1) != 0
            break                 # ans是上一堆剩下的(n-1)份,不能整除则修改x
        ans = ans // (n - 1) * n + i       # 求上一堆鱼数,用“/”除会变浮点数
    else:                         # 都能整除(for循环正常结束)
        break                     # 跳出while循环,输出答案
    x += 1
print(ans)

运行结果

【三级编程题2】

试题名称】:单位转换

问题描述

小杨这周的数学作业是做单位转换,喜欢编程的小杨决定编程帮他解决这些问题。小杨只学了长度单位和重量单位,具体来说:

  1. 长度单位包括千米( km )、米( m )、毫米( mm ),它们之间的关系是:1km=1000m=1000000mm。
  2. 重量单位包括千克( kg )、克( g )、毫克( mg ),它们之间的关系是:1kg=1000g=1000000mg。

小杨的作业只涉及将更大的单位转换为更小的单位,也就是说,小杨的作业只会包含如下题型:米转换为毫米,千米转换为毫米,千米转换为米,克转换为毫克,千克转换为毫克,千克转换为克。

现在,请你帮忙完成单位转换的程序。

输入描述

输入的第一行为一个整数N,表示题目数量。

接下来N行,每行一个字符串,表示转换单位的题目,格式为 x 单位1 = ? 单位2。其中, x为一个不超过1000的非负整数,“单位1”和“单位分别为两个单位的英文缩写,保证它们都是长度单位或都是重量单位,且“单位1”比“单位2”更大。

例如,如果题目需要你将1km转换为mm,则输入为1 km = ? mm(各部分用空格隔开)

保证1≤N≤1000。

输出描述

输出N行,依次输出所有题目的答案,输出时,只需要将输入中的 ? 代入答案,其余部分一字不差地输出即可。由于小杨的题目只涉及将更大的单位转换为更小的单位,并且输入的x是整数,因此答案一定也是整数。

例如,如果题目需要你将1km转换为mm,输入为1 km = ? mm,则你需要输出1 km = 1000000 mm

分析

1个字符长的单位为基本单位,换算系数设为1000,首字母为“k”的单位换算系数则为1000000,首字母为“m”的单位换算系数则为1。大单位转小单位,两单位的换算系数相除则为两单位间的换算系数。

完整代码

n = int(input())                           # 输入题目数量
for i in range(n):
    unt_con = input()                      # 输入换算式,形如:20 kg = ? g,每部分用空格隔开
    x, unt1, _, _, unt2 = unt_con.split()  # 拆分获取x和两个单位
    if unt1[-1] == unt2[-1]:               # 如果是同类单位
        def ratio(unt):                    #计算单位unt的换算系数
            if len(unt) == 1:
                return 1000
            elif unt[0] == "k":
                return 1000000
            else:
                return 1
        y = int(x) * ratio(unt1) // ratio(unt2)
        rst = unt_con.replace("?", str(y)) # 将?替换为转换结果
        print(rst)                         # 输出结果
    else:
        print('不是同类单位无法转换')

运行结果

四、2023年12月GESP Python四级编程题

【四级编程题1

【编程题1】

【试题名称】:小杨的字典

【问题描述】

在遥远的星球,有两个国家A国和B国,他们使用着不同的语言:A语言和B语。小杨是B国的翻译官,他的工作是将A语言的文章翻译成B语言的文章。

为了顺利完成工作,小杨制作了一本字典,里面记录了个A语言单词对应的B语言单词,巧合的是,这些单词都由地球上的26个小写英文字母组成。

小杨希望你写一个程序,帮助他根据这本字典翻译一段A语言文章。这段文章由标点符号!()-[]{}\|;:'",./?<>和一些A语言单词构成,每个单词之间必定由至少一个标点符号分割,你的程序需要把这段话中的所有A语言单词替换成它的B语言翻译。特别地,如果遇到不在字典中的单词,请使用大写UNK来替换它。

例如,小杨的字典中包含2个A语言单词abc和d,它们的B语言翻译分别为a和def,那么我们可以把A语言文章abc.d.d.abc.abcd.翻译成B语言文章a.def.def.a.UNK.,其中,单词abcd不在词典内,因此我们需要使用UNK来替换它。

【输入描述】

第一行一个整数N,表示词典中的条目数。保证N≤100。

接下来N行,每行两个用单个空格隔开的字符串A,B,分别表示字典中的一个A语言单词以及它对应的B语言翻译。保证所有A不重复;保证A和B的长度不超过10。

最后一行一个字符串S,表示需要翻译的A语言文章。保证字符串S的长度不超过1000,保证字符串S只包含小写字母以及标点符号!()-[]{}\|;:'",./?<>

输出描述

输出一行,表示翻译后的结果。

分析

先按N建一个N个键值对的字典,“键”为A语言,“值”为B语言。由于待翻译字符串S中只有代表A语言的小写字母以及标点符号!()-[]{}\|;:'",./?<>,两标点符号间的为单词,所以遇到标点符号,前面的为单词,需翻译,标点符号原样不需翻译,单词清空,为提取下一单词作准备。如单词不在字典中,则取值“UNK”。

完整代码

n = int(input())                           # 输入字典字条数
dic = {}
for i in range(n):
    key, val = input().split()             # 用空格拆分A语言与B语言对
    dic[key] = val                         # 建立A语言与B语言的翻译字典
org = input()                              # 获取待翻译句子,原文
org += '\n'                                # 添加换行符\n作为结束,\n也作为标点符号
mbc = ''                                   # 译文
wrd = ''                                   # 清空准备接收单词
for i in org:
    if i in '''!()-[]{}\|;:'",./?<>\n''':  # 如果是标点符号
        if wrd != '':                      # 如果接收单词有内容,则翻译
            if wrd in dic:                 # 单词在字典中
                mbc += dic[wrd]            # 则译文加入翻译词
            else:
                mbc += 'UNK'               # 否则译文加入“UNK”
            wrd=''                         # 清空准备接收下一个单词
        mbc += i                           # 译文加入标点符号
    else:
        wrd += i                           # 如果是字母,则加到单词中
print(mbc)                                 # 输出译文

运行结果

【四级编程题2】

【试题名称】:田忌赛马

【问题描述】

你要和田忌赛马。你们各自有N匹马,并且要进行N轮比赛,每轮比赛,你们都要各派出一匹马决出胜负。

你的马匹的速度分别为u1,u2,…,uN,田忌的马匹的速度分别为v1,v2,…,vN。田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛?巧合的是,你和田忌的所有马匹的速度两两不同,因此不可能出现平局。

【输入描述】

第一行一个整数N。保证1≤N≤5×10

接下来一行N个用空格隔开的整数,依次为u1,u2,…,uN,表示你的马匹们的速度。保证1≤ui≤2N

接下来一行N个用空格隔开的整数,依次为v1,v2,…,vN,表示田忌的马匹们的速度。保证1≤vi≤2N

输出描述

输出一行,表示你最多能获胜几轮。

分析

虽然问的是“田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛?”,但题目只需你回答你最多能赢(获胜)几轮。因此可以先给你的马和田忌的马按速度排序,然后你的马从慢到快,依次与田忌最慢马开始比,如果你的马赢了田忌的马,田忌更换再快一些的马(一匹马只能比一次)。

完整代码

n = int(input())                           # 每人马匹数
u = [int(i) for i in input().split()]      # 你的每匹马的速度值,拆分后用列表表达式转换
v = [int(i) for i in input().split()]      # 田忌的每匹马的速度值,拆分后用列表表达式转换
u.sort()                                   # 你的马按速度值排序
v.sort()                                   # 田忌的马按速度值排序
j = 0                                      # 田忌的马排序后的序号
ans = 0                                    # 答案初值
for i in range(n):                         # 你的马排序后的序号,每匹用一次
    if u[i] > v[j]:                        # 如果你选的马的速度快于田忌当前的马
        ans += 1                           # 你赢一轮
        j += 1                             # 田忌此马已比赛,不重复,更换下一匹更快的马
    # 如果你的马的速度慢于田忌当前的马,你得换下一匹更快的马
print(ans)                                 # 输出结果

运行结果

如严格按题意回答“田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛?”,需要记录原位置,则:

完整代码

n = int(input())                        # 每人马匹数
# 你的马的速度,拆分后用列表表达式转换为序号、速度(整数)元组列表,形如(序号, 速度)
u = [(i,int(j)) for i,j in enumerate(input().split())]
v = [int(i) for i in input().split()]   # 田忌的马的速度,拆分后用列表表达式转换为整数
u = sorted(u,key=lambda x:x[1])         # 按你的马的速度(元组第2项)排序,以提高匹配效率
j = 0                                   # 田忌的马排序后的序号
ans = 0                                 # 答案
for i in range(n):                      # 田忌的马按序比赛
    for j in u:
        if j[1] > v[i]:                 # 如果你选的马的速度快于田忌当前的马
            ans += 1                    # 你赢一轮
            x[(i,v[i])] = j             # 田忌此马已比赛,不重复,更换下一匹更快的马
            u.remove(j)                 # 比过的马删除,防止重复
            break
print(ans)                              # 输出结果
for i in x:                             # 输出比赛方案
    print(f'田忌{i[0]+1}号马(速度{i[1]}),'
          f'你用{x[i][0]+1}号马(速度{x[i][1]}),你赢')

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1330973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DBA-MySql面试问题及答案-上

文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎&#xff1f;6.可以针对表设置引擎吗&#xff1f;如何设置&#xff1f;6.选择合适的存储引擎&#xff1f;7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…

Stable Diffusion 基本原理

1 Diffusion Model的运作过程 输入一张和我们所需结果图尺寸一致的噪声图像&#xff0c;通过Denoise模块逐步减少noise&#xff0c;最终生成我们需要的效果图。 图中Denoise模块虽然是同一个&#xff0c;但是它会根据不同step的输入图像和代表noise严重程度的参数选择denoise的…

【接口测试】Postman(三)-变量与集合

一、变量 ​ 变量这个概念相信大家都不陌生&#xff0c;因此在这里我们不介绍了。主要说一下在Postman中有哪几类变量&#xff0c;主要包括以下四类&#xff1a; Global&#xff08;全局&#xff09; Environment&#xff08;环境&#xff09; Local&#xff08;本地&#xf…

安装gnvm,nodejs,npm使用方法

安装gnvm,nodejs,npm使用方法 一、安装gnvm gnvm.exe下载地址&#xff1a; https://download.csdn.net/download/hsg77/88651752 http://ksria.com/gnvm/#download 二、配置gnvm环境变量 新建目录&#xff0c;如&#xff1a;d:/nodejs 并把gnvm.exe存储到此目录 并把d:/node…

【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)

深度解析OAuth2.0协议的原理和流程框架实现指南 背景介绍OAuth1.0协议访问令牌案例分析 OAuth2.0OAuth2.0与OAuth1.0 OAuth2.0协议体系的Roles角色OAuth定义了四个角色资源所有者资源服务器客户端授权服务器 传统的客户机-服务器身份验证模型的问题协议流程 认证授权类型授权码…

Python生成圣诞节词云-代码案例剖析【第17篇—python圣诞节系列】

文章目录 ❄️Python制作圣诞树词云-中文&#x1f42c;展示效果&#x1f338;代码&#x1f334;代码剖析 ❄️Python制作圣诞树词云-英文&#x1f42c;展示效果&#x1f338;代码&#x1f334;代码剖析 &#x1f385;圣诞节快乐&#xff01; ❄️Python制作圣诞树词云-中文 &a…

【编译原理--复习】

知识点整理 第一章 同时伴有表格管理、出错处理 1、词法分析 任务&#xff1a;对构成源程序的字符串进行扫描和分解&#xff0c;识别出单词(如标识符等)符号 输入&#xff1a;源程序 输出&#xff1a;单词符号序列 2、语法分析 任务&#xff1a;根据语言的语法规则对单词符号…

[管理者与领导者-129]:很多人对高情商的误解,工程师要扩展自己的情商吗?工程师如何扩展自己的情商?

目录 前言&#xff1a; 一、什么是高情商&#xff1f; 1.1 什么是高情商 1.2 情商的五大能力 1.3 高情商的层次 1.4 对高情商的误解? 二、工程师需要发展自己的高情商吗&#xff1f; 三、工程师如何扩展自己的情商&#xff1f; 四、什么样的“高情商”的管理者令人讨…

、写入Shellcode到注册表上线

其实本质就是将shellcode写入到注册表中&#xff0c;然后读取注册表中的shellcode&#xff0c;然后创建线程去执行shellcode。 如下图: 写入注册表shellcode 这里将shellcode写入到注册表中&#xff0c;在我们需要的时候再去读取然后执行。 这里用到如下两个Windows API函…

智能硬件(6)之通用引脚(GPIO)

小编带领大家学习的四大开源硬件和智能模块&#xff0c;他们之间是如何通信的&#xff0c;主控芯片是如何控制智能模块&#xff0c;做某些事情呢&#xff1f;有没有小朋友发起疑问呢&#xff1f; 这里&#xff0c;涉及到了特别重要的知识点&#xff0c;就是通用引脚&#xff0c…

MAC地址、IP地址、端口

1.MAC 地址 网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件&#xff0c;又称为网络适配器或网 络接口卡NIC 。其拥有 MAC 地址&#xff0c;属于 OSI 模型的第 2 层&#xff0c;它使得用户可以通过电缆或无线相互连接。每一个网卡都有一个被称为 MAC 地…

Pipelined-ADC设计二——结构指标及非理想因素(Part2)

接上文&#xff0c;本章将两个比较重要的非理想因素&#xff0c;因此各项指标制定。后续会对常见的非理想因素给出常见的解决方法&#xff0c;以及设计所采用的方法。 2.2.3. 比较器失调 在流水线 ADC 中&#xff0c;比较器的主要误差来源就是比较器失调&#xff0c;称为失调误…

Python入门知识点分享——(八)文件的open方法

学完了Python当中的数据类型&#xff0c;下一步我们来了解如何用Python语言打开文件并添加内容。 目录 file mode buffering encoding errors newline closefd opener 函数 打开文件需要用到open函数&#xff0c;完整的语法格式如下所示&#xff0c;为了演示方便&…

量化服务器 - 后台挂载运行

服务器 - 后台运行 pip3命令被kill 在正常的pip命令后面加上 -no-cache-dir tmux 使用教程 https://codeleading.com/article/40954761108/ 如果你希望在 tmux 中后台执行一个 Python 脚本&#xff0c;你可以按照以下步骤操作&#xff1a; 启动 tmux: tmux这将会创建一个新…

全方位掌握卷积神经网络:理解原理 优化实践应用

计算机视觉CV的发展 检测任务 分类与检索 超分辨率重构 医学任务 无人驾驶 整体网络架构 卷积层和激活函数&#xff08;ReLU&#xff09;的组合是网络的核心组成部分 激活函数(ReLU&#xff09; 引入非线性&#xff0c;增强网络的表达能力。 卷积层 负责特征提取 池化层…

CSM4054 500mA线性锂离子电池充电管理 适用消费类的电子产品

CSM4054 是一款完整的单节鲤离子电池采用恒定电流/恒定电压线性充电器。其 SOT23-5 封装与较少的外部元件数量使得 CSM4054 成为便携式应用的理想选择。 CSM4054 可以适合 USB 电源和适配器电源工作。由于采用了内部 PMOSFET 架构&#xff0c;加上防倒充电路&#xff0…

Rust报错:the msvc targets depend on the msvc linker but `link.exe` was not found

当我在我的 windows 电脑上安装 rust&#xff0c;然后用 cargo 新建了一个项目后&#xff0c;cargo run 会报错&#xff1a; error: linker link.exe not found| note: program not foundnote: the msvc targets depend on the msvc linker but link.exe was not foundnote: p…

如何实现酷狗音乐pc页面点击播放时,打开多个歌曲播放时,始终在一个播放页面,(标签页的通讯)

大致有两种思路&#xff0c; 一种是通过wind.open()方法传第二个参数&#xff0c; A页面&#xff1a; //点击跳转播放页函数function toPlayPage(){window.open(path/xxxx/xxxx?name音乐名,music)//第二个参数写一个定值&#xff0c;代表跳转页面都为music标签页&#xff0…

小程序本地文件读、写、追加数据操作,以及修改文件内容

小程序系统文件管理器 FileSystemManager 要操作/读取本地文件,首先需要创建文件或文件夹,然后再对文件进行读写操作; 首先创建文件 FileSystemManager.writeFile 可直接创建文件并写入内容 定义文件路径,此路径在读写操作时保持一致 const path = `${wx.env.USER_DATA…

基于电商场景的高并发RocketMQ实战-NameServer内核原理剖析、Broker 主从架构与集群模式原理分析

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…