蓝桥杯day3

前言:突然发现自己上了新人榜,有点受宠若惊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 月英文的前三个字母分别是 JanFebMarAprMayJunJulAugSepOctNovDec

数字形式直接用两个整数表达,中间用一个空格分隔,两个整数都不写前 导 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!

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值