题目描述
根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
进阶:时间复杂度:
O
(
n
)
O(n)
O(n),空间复杂度:
O
(
1
)
O(1)
O(1)
输入描述
输入一行,每行空格分割,分别是年,月,日
输出描述
输出是这一年的第几天
代码
# 判断输入的四位数年份是否为闰年:整百年%400==0,非正百年%4==0
def is_runnian(n):
if n%100==0 and n%400==0:
return 1
elif n%100!=0 and n%4==0:
return 1
else:
return 0
y,m,d=map(int,input().split())
L=[31,28,31,30,31,30,31,31,30,31,30,31]
total_day=sum(L[:m-1])+d
flag=is_runnian(y)
if flag==1 and m>2:
total_day+=1
print(total_day)
代码解释
- 先明确闰年的规则:对于整百年,若是400的倍数则是闰年;对于非整百年,则是4的倍数为闰年
- 列表记录非闰年12个月的天数,闰年时,2月的天数+1
- 根据输入的年月日进行加法即可