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

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

  • 2026-09-10 19:42:00
【第38期】21天养成编程习惯:Python刷题第03天

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

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

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

Day03:GESP二级2024.06_平方和

【提交】

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

【问题描述】

小杨有 个正整数 ,他想知道对于所有的  (),是否存在两个正整数  和  满足 。

【输入描述】

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

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

【输出描述】

对于每个正整数 ,如果存在两个正整数  和  满足 ,输出 Yes,否则输出 No。

【样例输入1】

254

【样例输出1】

YesNo

【样例解释】

对于第一个正整数,存在 ,因此答案为 Yes。

【数据范围】

对于全部数据,保证有 。

参考程序:

'''[GESP202406 二级] 平方之和https://www.luogu.com.cn/problem/B4002'''n = int(input())for i in range(n):    a = int(input())    flag = Falsefor x in range(1, a):        y = a - x * xif y <= 0:break        z = int(y ** 0.5)if z * z == y:            flag = True            print("Yes")breakif flag isFalse:        print("No")

Day03:GESP三级2023.09_进制判断

【提交】

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

【问题描述】

进制数指的是逢进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A 至 F 表示十至十五)。

现在有个数,请你分别判断他们是否可能是二进制、八进制、十进制、十六进制。例如,15A6F 就只可能是十六进制,而 1011 则是四种进制皆有可能。

【输入描述】

输入的第一行为一个十进制表示的整数。接下来行,每行一个字符串,表示需要判断的数。保证所有字符串均由数字和大写字母组成,且不以 0 开头。保证不会出现空行。

保证 ,保证所有字符串长度不超过10。

【输出描述】

输出行,每行4个数,用空格隔开,分别表示给定的字符串是否可能表示一个二进制数、八进制数、十进制数、十六进制数。使用 1 表示可能,使用 0 表示不可能。

例如,对于只可能是十六进制数的 15A6F ,就需要输出 0 0 0 1 ;而对于四者皆有可能的 1011 ,则需要输出 1 1 1 1 。

【特别提醒】

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

【样例输入1】

215A6F1011

【样例输出1】

0 0 0 11 1 1 1

【样例输入2】

4123456712345678FFGG

【样例输出2】

0 1 1 10 0 1 10 0 0 10 0 0 0

参考程序:

'''[GESP202309 三级] 进制判断https://www.luogu.com.cn/problem/B3868'''n = int(input())for i in range(n):    s = input()    max_bit = '0'for c in s:if c > max_bit:            max_bit = c    a = [max_bit <= '1', max_bit <= '7', max_bit <= '9',max_bit <= 'F']    b = [str(int(i)) for i in a]    print(" ".join(b))

Day03:GESP四级2025.06_排序

【提交】

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

【问题描述】

体育课上有  名同学排成一队,从前往后数第  位同学的身高为 ,体重为 。目前排成的队伍看起来参差不齐,老师希望同学们能按照身高从高到低的顺序排队,如果身高相同则按照体重从重到轻排序。在调整队伍时,每次只能交换相邻两位同学的位置。老师想知道,最少需要多少次交换操作,才能将队伍调整成目标顺序。

【输入描述】

第一行,一个正整数 ,表示队伍人数。

接下来  行,每行两个正整数  和 ,分别表示第  位同学的身高和体重。

【输出描述】

输出一行,一个整数,表示最少需要的交换次数。

【样例输入1】

51 603 702 804 554 50

【样例输出1】

8

【样例输入2】

54 04 02 03 01 0

【样例输出2】

1

【数据范围】

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

参考程序:

注:官方给的参考答案,在洛谷提交也超时了。

'''[GESP202506 四级] 排序https://www.luogu.com.cn/problem/B4361'''n = int(input())lst = []for _ in range(n):    s = tuple(map(int, input().split()))    lst.append(s)cnt = 0for i in range(n - 1):    flag = Truefor j in range(len(lst) - 1 - i):if lst[j] < lst[j + 1]:            lst[j], lst[j + 1] = lst[j + 1], lst[j]            cnt += 1            flag = Falseif flag isTrue:breakprint(cnt)

青少年编程竞赛交流

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

最新文章

随机文章