当前位置:首页>python>【第38期】21天养成编程习惯:Python刷题第12天

【第38期】21天养成编程习惯:Python刷题第12天

  • 2026-09-27 15:25:55
【第38期】21天养成编程习惯:Python刷题第12天

跟老马一起“升级打怪”学编程!

  • 涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试
  • 活动内容:提供不同等级的真题供小朋友们选择练习
  • 备考建议:根据自己备考的等级选择相应题目
  • 附加价值:可作为白名单比赛的备考训练
  • 本月打卡:本月GESP_Python打卡题目

Day12:GESP一级2025.09_商店折扣

【提交】

https://www.luogu.com.cn/problem/B4409

【问题描述】

商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满  元减  元;第二种方案是直接打  折,也就是说价格变为原先的 。这里的  均是正整数,并且 ,。

需要注意的是,第一种方案中满减优惠只能使用一次。例如购物满  元减  元时,若挑选了价格总和为  元的物品,只能减免  元,需要支付  元。

小明在商店挑选了价格总和为  元的物品,结账时只能使用一种优惠方案。小明最少需要支付多少钱呢?

【输入描述】

一行,四个正整数 ,含义见题目描述。

【输出描述】

一行,一个小数,表示小明最少需要支付多少钱,保留两位小数。

【样例输入1】

8 7 9 10

【样例输出1】

3.00

【样例输入2】

8 7 2 11

【样例输出2】

2.20

【提示】

对于所有测试点,保证 ,,。

参考程序:

'''[GESP202509 一级] 商店折扣https://www.luogu.com.cn/problem/B4409'''x = int(input())y = int(input())n = int(input())p = int(input())c = p * n / 10if p >= x:if p - y < c:        c = p - yprint("%.2f" % c)

Day12:GESP二级2025.06_数三角形

【提交】

https://www.luogu.com.cn/problem/B4356

【问题描述】

直角三角形有两条直角边与一条斜边,设两条直角边的长度分别为 ,则直角三角形的面积为 。

请你计算当直角边长  均取不超过  的正整数时,有多少个不同的面积为整数的直角三角形。直角边长分别为  和  的两个直角三角形相同,当且仅当  或者 。

【输入描述】

一行,一个整数 ,表示直角边长的最大值。

【输出描述】

输出一行,一个整数,表示不同的直角三角形数量。

【样例输入1】

3

【样例输出1】

3

【样例输入2】

5

【样例输出2】

9

【数据范围】

对于所有测试点,保证 。

参考程序:

'''[GESP202506 二级] 数三角形https://www.luogu.com.cn/problem/B4356'''cnt = 0n = int(input())for a in range(1,n+1):for b in range(a,n+1):if a*b%2==0:            cnt+=1print(cnt)

Day12:GESP三级2024.12_数字替换

【提交】

https://www.luogu.com.cn/problem/B4066

【问题描述】

小杨有一个包含  个数字的序列 ,即 ,他想将其中大于  的数字都替换为序列的最大值,将其中小于  的数字都替换为序列的最小值,请你帮他计算出替换后的序列。

【输入描述】

第一行包含两个正整数 ,含义如题面所示。

第二行包含  个数字,代表序列 。

【输出描述】

输出  个正整数,代表替换后的结果。

【样例输入1】

5 0-2 -1 0 1 2

【样例输出1】

-2 -2 0 2 2

【数据范围】

对于全部数据,保证有 , 。

参考程序:

'''GESP202412 三级 数字替换https://www.luogu.com.cn/problem/B4066'''n, k = map(int, input().split())lst = list(map(int, input().split()))max_value = max(lst)min_value = min(lst)for i in range(n):if lst[i] > k:        lst[i] = max_valueelif lst[i] < k:        lst[i] = min_valuelst = list(map(str, lst))print(" ".join(lst))

Day12:GESP四级2024.03_相似字符串

【提交】

https://www.luogu.com.cn/problem/B3958

【问题描述】

对于两个字符串A和B,如果A可以通过删除一个字符,或插入一个字符,或修改一个字符变成B,那么我们说A和B是相似的。

比如 apple 可以通过插入一个字符变成 applee ,可以通过删除一个字符变成 appe ,也可以通过修改一个字符变成 bpple ,因此 apple 和 applee 、 appe 、 bpple 都是相似的。但 applee 并不能通过任意一个操作变成bpple ,因此它们并不相似。

特别地,完全相同的两个字符串也是相似的。

给定T组A,B,请你分别判断他们是否相似。

【输入描述】

第一行一个正整数T。

接下来T行,每行两个用空格隔开的字符串A和B。

保证,A,B的长度不超过50。保证A和B只包含小写字母。

【输出描述】

输出T行,对于每组A,B,如果它们相似,则输出 similar ,否则输出 not similar 。

【特别提醒】

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

【样例输入1】

5apple appleeapple appeapple bppleapplee bppleapple apple

【样例输出1】

similarsimilarsimilarnot similarsimilar

参考程序:

'''[GESP202403 四级] 相似字符串https://www.luogu.com.cn/problem/B3958'''defcheck01(s1, s2):"""    长度差1的情况,s1比s2短    """    ls1 = len(s1)    i, j, cnt = 0, 0, 0while i < ls1:if s1[i] != s2[j]:            j += 1            cnt += 1if cnt > 1:return "not similar"else:            i += 1            j += 1return "similar"defcheck02(s1, s2):"""    长度相等的情况    """    cnt = 0    ls1 = len(s1)for i in range(ls1):if s1[i] != s2[i]:            cnt += 1if cnt == 0 or cnt == 1:return "similar"return "not similar"T = int(input())for _ in range(T):    a, b = input().split()    la, lb = len(a), len(b)if la == lb:        print(check02(a, b))elif la - lb == 1:        print(check01(b, a))elif la - lb == -1:        print(check01(a, b))else:        print("not similar")

青少年编程竞赛交流

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

最新文章

随机文章