前言:突然发现自己上了新人榜,有点受宠若惊hhh。今天在忙着完成比赛的论文而且我这个大学工作日都会断电的,所以今天更新不了几题。
题目1:整除数列
题目描述
有一个序列,序列的第一个数是 n,后面的每个数是前一个数整除 2,请输出这个序列中值为正数的项。
输入格式
输入一行包含一个整数 n。
输出格式
输出一行,包含多个整数,相邻的整数之间用一个空格分隔,表示答案。
思路:直接模拟就好了,注意这里需要先将原来的数加到列表中。这里的输出需要用到python中的' '.join()方法使得输出的答案之间有空格。
代码:
n = int(input())
res = []
res.append(str(n))
while n > 1:
n = n // 2
res.append(str(n))
result = ' '.join(res)
print(result)
反省与思考:这里我因为不熟悉’ ‘.join方法,所以我一开始的时候,直接把数字添加到列表再用.join方法,会出错。这是因为.join方法是链接字符串的,而不是链接整形数字的(我是这么理解的)。因此这里要在添加到列表之前,把数字转换成字符。
题目2:
小蓝要处理非常多的数据, 其中有一些数据是日期。
在小蓝处理的日期中有两种常用的形式:英文形式和数字形式。
英文形式采用每个月的英文的前三个字母作为月份标识,后面跟两位数字表示日期,月份标识第一个字母大写,后两个字母小写, 日期小于 10 时要补前导 00。11 月到 12 月英文的前三个字母分别是 Jan
、Feb
、Mar
、Apr
、May
、Jun
、Jul
、Aug
、Sep
、Oct
、Nov
、Dec
。
数字形式直接用两个整数表达,中间用一个空格分隔,两个整数都不写前 导 0
。其中月份用 1 至 12 分别表示 1 月到 12 月。
输入一个日期的英文形式, 请输出它的数字形式。
输入格式
输入一个日期的英文形式。
输出格式
输出一行包含两个整数,分别表示日期的月和日。
思路:题目以及表明了,前三个一定是月份,因此只需要取前面三个和后面三个,再对应到字典里就可以了。
代码:
dic = {"Jan": 1,"Feb": 2,"Mar": 3,"Apr": 4,"May": 5,"Jun": 6,"Jul": 7,"Aug": 8,"Sep": 9,"Oct": 10,"Nov": 11,"Dec": 12}
a = input()
# 从字符串中提取月份和日期
m = a[:3]
d = a[3:]
print(dic[m], int(d))
思考与反省:这题很简单,没有必要像我一开始一样去遍历输入的字符串。(扶额.jpg)
题目三:
题目描述
小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 00),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 n 中,所有这样的数的和是多少?
输入格式
输入一行包含一个整数 n。
输出格式
输出一行,包含一个整数,表示满足条件的数的和
思路:这里需要判断数字中否含有0、1、2、9,因此从开始遍历到这个数字的位置,将其转换成字符串就判断是否含有这些数字,最后累加就可以了。
代码
a = 0
n = int(input())
for i in range(1,n+1):
if "2" in str(i) or "1" in str(i) or "0" in str(i) or "9" in str(i):
a+=i
print(a)
反省与思考:这里还是比较简单的,就看是否能够想到这个方法。
一点小小的话:因为今天能够写题目的时间实在是太少了,而且本人水平也比较低,所以今天写的题目有点少,明天再补上。good night!