汕头网站制作全过程佛山企业网站设计公司
汕头网站制作全过程,佛山企业网站设计公司,免费网站中文源码下载,网站建设 关于我们三、2023年12月GESP Python三级编程题
【三级编程题1】
【试题名称】#xff1a;小猫分鱼
【问题描述】
海滩上有一堆鱼#xff0c;N只小猫来分。第一只小猫把这堆鱼平均分为N份#xff0c;多了iN条鱼#xff0c;这只小猫把多的i条鱼扔入海中#xff0c;拿走了一份…三、2023年12月GESP Python三级编程题
【三级编程题1】
【试题名称】小猫分鱼
【问题描述】
海滩上有一堆鱼N只小猫来分。第一只小猫把这堆鱼平均分为N份多了iN条鱼这只小猫把多的i条鱼扔入海中拿走了一份。第二只小猫接着把剩下的鱼平均分成份又多了i条鱼小猫同样把多的i条鱼扔入海中拿走了一份。第三、第四、……第N只小猫仍是最终剩下的鱼分成N份扔掉多了的i条鱼并拿走一份。
编写程序输入小猫的数量以及每次扔到海里的鱼的数量输出海滩上最少的鱼数使得每只小猫都可吃到鱼。
例如两只小猫来分鱼N2每次扔掉鱼的数量为i1为了每只小猫都可吃到鱼可令第二只小猫需要拿走1条鱼则此时待分配的有3条鱼。第一只小猫待分配的鱼有3*217条。
【输入描述】
总共 2 行。第一行一个整数N第二行一个整数i。保证0N10iN。
【输出描述】
一行一个整数表示满足要求的海滩上最少的鱼数。
【分析】
设最后的小猫吃到x条鱼(x≥1)所以最后一堆鱼数为x*Ni条上一堆是本堆的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 ifor j in range(1, n):if ans % (n - 1): # 也可用ans % (n - 1) ! 0break # ans是上一堆剩下的(n-1)份不能整除则修改xans ans // (n - 1) * n i # 求上一堆鱼数用“/”除会变浮点数else: # 都能整除(for循环正常结束)break # 跳出while循环输出答案x 1
print(ans)
【运行结果】 【三级编程题2】
【试题名称】单位转换
【问题描述】
小杨这周的数学作业是做单位转换喜欢编程的小杨决定编程帮他解决这些问题。小杨只学了长度单位和重量单位具体来说
长度单位包括千米( km )、米( m )、毫米( mm )它们之间的关系是1km1000m1000000mm。重量单位包括千克( kg )、克( g )、毫克( mg )它们之间的关系是1kg1000g1000000mg。
小杨的作业只涉及将更大的单位转换为更小的单位也就是说小杨的作业只会包含如下题型米转换为毫米千米转换为毫米千米转换为米克转换为毫克千克转换为毫克千克转换为克。
现在请你帮忙完成单位转换的程序。
【输入描述】
输入的第一行为一个整数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 1000elif unt[0] k:return 1000000else:return 1y 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,keylambda 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.mzph.cn/diannao/89153.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!