题目分析
- 题目给出我们年、月、日的信息
- 题目希望我们输出这个年月日对应在该年份中是第几天
方法一:调用datetime库
- 实现思路
-
datetime库中的strftime方法支持以天数的方式输出
-
其中日期格式化符号%j就是天数表示
-
但是这样输出的结果是从001到366为止的字符串
-
我们还要从左边去掉所有的0才是最终的结果
-
import datetime
while True:
try:
y,m,d = map(int, input().split())
d = datetime.date(y, m, d) # 录入日期
print(d.strftime("%j").lstrip("0")) # 指定输出一年内的天数并且去掉左边的0
except:
break
复杂度分析
- 时间复杂度:,对于某个固定的年份和月日时期,计算的代价很小,常量级别的时间代价就可以解决问题
- 空间复杂度:,只引入了常量级别的空间代价
方法二:平闰年区别计算
- 实现思路
- 我们知道闰年的二月份是29天,平年的二月份是28天
- 因此在计算某个日子是多少天的时候,要根据平年闰年的不同进行分类塔伦
- 知道这一点后加和所有的天数即可
while True:
try:
y, m, d = map(int, input().split())
month = [31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31] # 平年的月份
if y % 400 == 0 or (y % 100 != 0 and y % 4 == 0):
month[1] = 29 # 闰年的月份
print(sum(month[:m-1]) + d) # 统计时间
except:
break
复杂度分析
- 时间复杂度:,对于某个固定的年份和月日时期,计算的代价很小,常量级别的时间代价就可以解决问题
- 空间复杂度:,只引入了常量级别的空间代价