天梯赛L1-22-25
L1-022 奇偶分家
题目描述
给定 N
个正整数,统计其中奇数和偶数各有多少个。
输入格式
- 第一行:一个正整数
N
(≤1000)。 - 第二行:
N
个非负整数,以空格分隔。
输出格式
在一行中输出奇数的个数和偶数的个数,中间用 1 个空格 分隔。
输入样例
9
88 74 101 26 15 0 34 22 77
输出样例
3 6
解题思路
- 输入处理:
• 读取N
(表示数字的个数)。
• 读取第二行的N
个数字,存入列表。 - 奇偶统计:
• 遍历所有数字,判断每个数字是奇数还是偶数。
• 使用% 2
取模运算:
◦ 如果num % 2 == 1
,则是奇数。
◦ 如果num % 2 == 0
,则是偶数(包括0
)。 - 输出结果:
• 输出奇数个数和偶数个数,格式为奇数 偶数
。
Python 代码实现
n = int(input())
numbers = list(map(int, input().split()))
odd = 0
even = 0for num in numbers:if num % 2 == 1:odd += 1else:even += 1print(f"{odd} {even}")
L1-023 输出GPLT
题目描述
给定一个仅由英文字母构成的字符串(长度 ≤10000),要求:
- 筛选字符:只保留
G
、P
、L
、T
(不区分大小写)。 - 按顺序输出:按照
GPLTGPLT...
的循环顺序输出字符,直到所有字符用完。 - 忽略其他字符:非
GPLT
的字母直接跳过。
输入格式
• 一行字符串,仅包含英文字母。
输出格式
• 按 GPLT
顺序输出的字符串。
输入样例
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
输出样例
GPLTGPLTGLTGLGLL
解题思路
- 统计字符数量:
• 遍历字符串,统计G
、P
、L
、T
(不区分大小写)的出现次数。 - 循环输出:
• 按照G → P → L → T
的顺序循环输出,每次输出一个字符后,对应计数减 1。
• 当某个字符的计数归零时,跳过该字符,继续按顺序输出剩余的字符。 - 终止条件:
• 所有字符的计数均为 0 时停止。
代码实现
res_G = res_L = res_P = res_T = 0
a = input().strip().upper()
for char in a:if char == 'G':res_G += 1elif char == 'P':res_P += 1elif char == 'L':res_L += 1elif char == 'T':res_T += 1while res_G > 0 or res_L > 0 or res_P > 0 or res_T > 0:if res_G > 0:print("G", end="")res_G -= 1if res_P > 0:print("P", end="")res_P -= 1if res_L > 0:print("L", end="")res_L -= 1if res_T > 0:print("T", end="")res_T -= 1
print()
L1-024 后天
题目描述
给定一个数字 D
(1 ≤ D ≤ 7),表示星期几(1=星期一,2=星期二,…,7=星期日),计算并输出“后天”对应的星期数。
输入格式
• 一个正整数 D
(1 ≤ D ≤ 7)。
输出格式
• 输出 D
的后天对应的星期数(1~7)。
输入样例
3
(表示今天是星期三)
输出样例
5
(后天是星期五)
解题思路
-
问题分析:
• 星期是循环的,7 天后又回到星期一。
• “后天” = 今天 + 2 天。
• 如果D + 2 > 7
,则需要取模运算((D + 2) % 7
),但要注意:
◦ 如果D + 2 = 8
,应该输出1
(星期一),而不是8 % 7 = 1
。
◦ 如果D + 2 = 9
,应该输出2
(星期二),即9 % 7 = 2
。
• 因此,可以直接用(D + 1) % 7 + 1
计算:
◦D + 1
:先加 1 天(“明天”)。
◦% 7
:处理循环。
◦+ 1
:调整到 1~7 的范围。 -
公式推导:
• 后天 =(D + 2 - 1) % 7 + 1
(-1
是为了让星期一从 0 开始计算,+1
恢复 1~7 的编号)• 更简单的方式:
◦ 直接计算(D + 2) % 7
,但如果结果是0
,则改为7
。 -
代码实现:
• 使用(D + 2) % 7
,如果结果为0
,则输出7
,否则输出计算结果。
Python 代码
n=int(input())
if n==6:print(1,end="")
elif n==7:print(2,end="")
else:print(n+2)
L1-025 正整数A+B
题目描述
给定两个输入 A
和 B
(以第一个空格分隔),要求:
- 检查
A
和B
是否为 正整数且在 [1, 1000] 范围内。 - 如果合法,计算
A + B
并输出A + B = 和
。 - 如果非法(如负数、小数、乱码、超出范围),对应位置输出
?
,且和为?
。
输入格式
• 一行字符串,包含 A
和 B
,以 第一个空格 分隔。
输出格式
• 合法时:A + B = 和
• 非法时:? + ? = ?
(或部分替换为 ?
)
输入样例1
123 456
输出样例1
123 + 456 = 579
输入样例2
22. 18
输出样例2
? + 18 = ?
输入样例3
-100 blabla bla...33
输出样例3
? + ? = ?
Python 代码
a = input().split(maxsplit=1) # 按第一个空格分割
if len(a) < 2: # 题目保证至少一个空格,但保险起见print("? + ? = ?")
else:# 处理A和Bdef validate(num_str):try:num = int(num_str)return 1 <= num <= 1000except ValueError:return Falsevalid_a = validate(a[0])valid_b = validate(a[1])# 输出结果output_a = a[0] if valid_a else "?"output_b = a[1] if valid_b else "?"sum_ab = "?"if valid_a and valid_b:sum_ab = str(int(a[0]) + int(a[1]))print(f"{output_a} + {output_b} = {sum_ab}")!