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

三、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()                                 # 获取待翻译句子,原文
mbc = ''                                      # 译文
wrd = ''                                      # 接收单词
for i in org:
    if i in '''!()-[]{}\|;:'",./?<>''':       # 如果是标点符号
        if wrd != '':                         # 如果wrd有内容则翻译
            if wrd in dic:                    # 如在字典中,则翻译
                mbc += dic[wrd]
            else:
                mbc += 'UNK'                  # 否则为‘UNK’
            wrd=''                            # 清空准备接收下一个单词
        mbc += i                              # 加上标点符号
    else:
        wrd += i                              # 如不是标点符号,则加到词中
if wrd != '':                                 # 如最后一个不是标点符号,单独翻译
    if wrd in dic:
        mbc += dic[wrd]
    else:
        mbc += 'UNK'
print(mbc)

运行结果

【四级编程题2】

【试题名称】:田忌赛马

【问题描述】

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

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

【输入描述】

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

接下来一行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.mfbz.cn/a/260149.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java_集合进阶(Collection和List系列)

一、集合概述和分类 1.1 集合的分类 已经学习过了ArrayList集合&#xff0c;但是除了ArrayList集合&#xff0c;Java还提供了很多种其他的集合&#xff0c;如下图所示&#xff1a; 我想你的第一感觉是这些集合好多呀&#xff01;但是&#xff0c;我们学习时会对这些集合进行…

读书笔记产品经理学习笔记1-忘掉技术,先看客户需求

技术到产品思维的转换 以前做技术的时候&#xff0c;扮演的角色是怎样多快好省的完成开发。现在做产品了&#xff0c;你得自己定产品方案&#xff0c;让别人来开发。最重要的是先弄清楚客户的需求是什么&#xff0c;要解决什么问题&#xff0c;再看产品怎么设计&#xff0c;然…

用ImageJ处理高斯光束的光斑

文章目录 图像显示图像裁剪高斯拟合 图像显示 ImageJ是著名的科研图像处理工具&#xff0c;提供了非常强大的分析功能&#xff0c;处理光斑图像简直是小菜一碟。这里推荐下载fiji&#xff0c;是内置了大量插件的ImageJ&#xff0c;可以满足各种科研上的图像处理需求。 打开一…

RTOS中断管理的简单应用

我们在stm32f103c8t6单片机上验证RTOS中断管理&#xff0c;利用stm32cube进行RTOS的配置。裸机的时钟源默认是 SysTick&#xff0c;但是开启 FreeRTOS 后&#xff0c;FreeRTOS会占用 SysTick &#xff08;用来生成1ms 定时&#xff0c;用于任务调度&#xff09;&#xff0c;所以…

maven学习和maven聚合工程搭建

1.学习maven maven的概念 项目管理工具 &#xff0c;对jar进行依赖管理&#xff0c;编译&#xff0c;打包&#xff0c;单元测试&#xff0c;安装&#xff0c;部署&#xff0c;贯穿整个项目 为什么要学maven 要解决的问题&#xff1a; 不同的开发工具开发出来的项目目录结构…

智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.非洲秃鹫算法4.实验参数设定5.算法结果6.…

PostgresSQL数据库中分区和分表的区别以及PostgresSQL创建表分区分表示例

1.分区分表理解 数据库分区和分表都是数据库中常用的数据分散存储技术&#xff0c;但它们的实现方式和应用场景有所不同。 分表&#xff1a;将一个大的表拆分成多个小的表&#xff0c;每个子表存储一部分数据。分表可以减轻单个表的数据量&#xff0c;提高查询效率&#xff0c…

七、W5100S/W5500+RP2040之MicroPython开发<HTTP Client示例>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 原理2.3 请求方法2.4 应用 3. WIZnet以太网芯片4. HTTP Client通信示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;Mic…

Swagger2接口测试文档

目录 一、Swagger简介 1.1 Swagger是什么&#xff1f; 1.2 为什么要用Swagger 1.3 Swagger注解 二、Spring集成Swagger 三、测试环境配置 一、Swagger简介 1.1 Swagger是什么&#xff1f; Swagger是一款RESTFUL接口的文档在线自动生成功能测试功能软件。Swagger是一个规…

Qt 国际化——创建中英文翻译步骤

Qt 国际化——创建中英文翻译步骤 说明&#xff1a;之前我的csdn博客&#xff0c;第一篇文章发表的就是Qt国际化的文章&#xff08;点击打开&#xff09;&#xff0c;写的也过于简单了&#xff1a; 今天&#xff0c;这篇文章再详细的记录下&#xff0c;中英文翻译的步骤。 一…

【Python】循环语句

一、while循环的基础语法 二、while循环的嵌套应用 三、while循环的嵌套案例 四、for循环的基础语法 五、for循环的嵌套应用 六、循环中断 : break和continue 一、while循环的基础语法 使用while循环的基础应用 while循环语句 while循环注意点 while的条件需得到布尔类型&am…

高通平台开发系列讲解(系统篇)系统关机流程

文章目录 一、关机流程图二、执行关机流程2.1、kernel_shutdown_prepare流程2.2、migrate_to_reboot_cpu流程2.3、syscore_shutdown流程2.4、machine_power_off流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要图解高通平台系统关机流程。 一、关机流程图…

Go后端开发 -- 环境搭建

Go后端开发 – 环境搭建 文章目录 Go后端开发 -- 环境搭建一、环境配置二、IDE的选择三、使用go mod构建项目1.初始化项目2.添加依赖项3.运行项目 四、环境报错1.VS Code中gopls报错 一、环境配置 Go官网下载地址&#xff1a;https://golang.org/dl/ https://go.dev/dl/ Go官方…

SpringSecurity深度解析与实践(1)

目录 引言1. SpringSecurity1.1 SpringSecurity简介1.2 SpringSecurity工作原理1.3.特点 2. SpringSecurity的快速使用总结 引言 SpringSecurity作为Spring框架中的一个重要组成部分&#xff0c;扮演着保护应用程序安全的重要角色。本文将深入探讨SpringSecurity的原理、使用方…

C# .Net学习笔记—— Expression 表达式目录树

一、什么是表达式目录树 &#xff08;1&#xff09;Expression我们称为是表达式树&#xff0c;是一种数据结构体&#xff0c;用于存储需要计算&#xff0c;运算的一种结构&#xff0c;这种结构可以只是存储&#xff0c;而不进行运算。通常表达式目录树是配合Lambda一起来使用的…

PySpark中DataFrame的join操作

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

常见可视化大屏编辑器有哪些?

前言&#xff1a; 在当今数字化时代&#xff0c;可视化大屏编辑器成为了数据展示和决策支持的重要工具。大屏编辑器不仅仅是数据的呈现&#xff0c;更是数据背后的故事的讲述者。它通过图表、图形和实时数据的呈现&#xff0c;为用户提供了全面的信息视图&#xff0c;帮助用户更…

【无人机学习篇】构建mavros机载电脑连接,从机载电脑获取pixhawk数据

&#xff08;本文基于的pixhawk版本&#xff1a;6X minibase V2.2 &#xff0c;固件&#xff1a;apm&#xff09; 整个的步骤&#xff08;baseline&#xff09;&#xff1a; 具体的每一步都可以在网上查到教程&#xff0c;这里只是梳理出一个流程。并且ubantu与ros的版本也不是…

Python - 深夜数据结构与算法之 Map Set

目录 一.引言 二.Map 与 Set 1.Hash Table 2.Hash Function 3.Hash Collisions 4.Java/Python Code 三.经典算法实战 1.Two-Sum [1] 2.Group-Anagrams [49] 3.Valid-Anagram [242] 四.总结 一.引言 前面介绍了列表 List 及其衍生的栈 Stack 与队列 Queue&#xff0…

VR全景技术在政务服务中有哪些应用,为政务服务带来什么便利

引言&#xff1a; 随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;全景技术正逐渐成为政务服务领域的一项重要工具。其独特的沉浸式体验为政务服务带来了全新的便利&#xff0c;提升了公众参与的积极性。 一、VR全景技术在政务服务中的应用 1.虚拟实景政务…
最新文章