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

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

  • 2026-10-10 11:52:15
【第40期】21天养成编程习惯:Python刷题第14天

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

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

Day14:GESP一级2025.09_金字塔

【提交】

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

【问题描述】

金字塔由  层石块垒成。从塔底向上,每层依次需要  块石块。请问搭建金字塔总共需要多少块石块?

【输入描述】

一行,一个正整数 ,表示金字塔的层数。

【输出描述】

一行,一个正整数,表示搭建金字塔所需的石块数量。

【样例输入1】

2

【样例输出1】

5

【样例输入2】

5

【样例输出2】

55

【提示】

对于所有测试点,保证 。

参考程序:

'''[GESP202509 一级] 金字塔https://www.luogu.com.cn/problem/B4410'''n = int(input())i = 1ans = 0while i <= n:    ans += i * i    i += 1print(ans)

Day14:GESP二级2024.12_数位和

【提交】

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

【问题描述】

小杨有  个正整数,小杨想知道这些正整数的数位和中最大值是多少。

“数位和”指的是一个数字中所有数位的和。

例如:

对于数字 ,它的各个数位分别是 , , , , 。将这些数位相加,得到:

因此, 的数位和是 。

【输入描述】

第一行包含一个正整数 ,代表正整数个数。

之后  行,每行包含一个正整数。

【输出描述】

输出这些正整数的数位和的最大值。

【样例输入1】

3168110

【样例输出1】

9

【数据范围】

对于全部数据,保证有 ,每个正整数不超过 。

参考程序:

'''[GESP202412 二级] 数位和https://www.luogu.com.cn/problem/B4065'''n = int(input())result = 0for i in range(n):    x = int(input())    k = 0while x > 0:        k += x % 10        x = x // 10if k > result:        result = kprint(result)

Day14: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))

Day14:GESP四级2024.09_区间排序

【提交】

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

【问题描述】

小杨有一个包含  个正整数的序列 。

小杨计划对序列进行多次升序排序,每次升序排序小杨会选择一个区间 ()并对区间内所有数字,即  进行升序排序。每次升序排序会在上一次升序排序的结果上进行。

小杨想请你计算出多次升序排序后的序列。

【输入描述】

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

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

第三行包含一个正整数 ,代表排序次数。

之后  行,每行包含两个正整数 ,,代表将区间  内所有数字进行升序排序。

【输出描述】

输出一行包含  个正整数,代表多次升序排序后的序列。

【样例输入1】

53 4 5 2 134 53 41 3

【样例输出1】

1 3 4 5 2

【提示】

  • 第一次升序排序后,序列为 ;
  • 第二次升序排序后,序列为 ;
  • 第三次升序排序后,序列为 ;

对于全部数据,保证有 。

参考程序:

''' [GESP202409 四级] 区间排序https://www.luogu.com.cn/problem/B4041'''n = int(input())a = list(map(int, input().split()))q = int(input())for _ in range(q):    l, r = map(int, input().split())    x = a[l - 1: r]    a[l - 1:r] = sorted(x)r = " ".join(list(map(str, a)))print(r)

青少年编程竞赛交流

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

最新文章

随机文章