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

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

  • 2026-10-11 06:18:49
【第42期】21天养成编程习惯:Python刷题第04天

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


Day04:GESP一级2024.06_立方数

【提交】

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

【问题描述】

小杨有一个正整数 ,他想知道  是否是一个立方数。

一个正整数  是立方数当且仅当存在一个正整数  满足 。

【输入描述】

第一行包含一个正整数 。

【输出描述】

如果正整数  是一个立方数,输出 Yes,否则输出 No。

【样例输入1】

8

【样例输出1】

Yes

【样例输入2】

9

【样例输出2】

No

【样例解释】

对于样例1,存在正整数  使得 ,因此  为立方数。

对于样例2,不存在满足条件的正整数,因此  不为立方数。

【数据范围】

对于全部数据,保证有 。

参考程序:

'''GESP2024.06 立方数https://www.luogu.com.cn/problem/B4001'''n = int(input())i, flag = 1, Falsewhile i ** 3 <= n:if i ** 3 == n:        flag = Truebreak    i += 1if flag:    print("Yes")else:    print("No")

Day04:GESP二级2023.06_自幂数

【提交】

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

【问题描述】

1、判断一个正整数是否为自幂数;

2、自幂数是指  位数各位数字  次方之和是本身,如 153 是 3 位数,其每位数的 3 次方之和是 153 本身,因此 153 是自幂数,1634 是 4 位数,其每位数的 4 次方之和是 1634 本身;

3、首先输入一个整数  表示随后有  行每行有一个整数,输出每个整数是否为自幂数,如是则输出 T,否则 F。

【输入描述】

1、输入正整数 。不考虑输入不合规情形如负数、负整数、零或其他字符串等;

2、从第 2 行开始,输入  行每行一个正整数;

3、特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。

【输出描述】

1、输出对应正整数是否为自幂数,如是则输出一个英文字母 T,否则一个英文字母F;

2、特别提示:注意输出字母为大写,小写将判为错误,前后没有空格等。

【样例输入1】

3152111153

【样例输出1】

FFT

【样例输入2】

5820854883488593477123455432

【样例输出2】

TTTFF

参考程序:

'''[GESP202306 二级] 自幂数判断https://www.luogu.com.cn/problem/B3841'''N = int(input())  # 输入数据的数量for i in range(N):    M = int(input())  # 输入判断的数    howDigit = 0# 获得输入整数的位数    tmp = Mwhile tmp != 0:        howDigit += 1        tmp //= 10# 执行完本步,M 将减少 1 位    tnt = 0    tmp = M# 计算各位幂次方的和while tmp != 0:        tnt = tnt + (tmp % 10) ** howDigit        tmp //= 10# 判断是否为自幂数if tnt == M:        print("T")else:        print("F")

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

Day04: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天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

最新文章

随机文章