计算月份和日期
总时间限制:
50000ms
内存限制:
50000kB
描述
定义函数date(year, num),参数是整数,返回三元组(year, m, d),表示year年第num天是m月d日。m和d是正整数。在num值不正确时返回None。
本题不可以使用标准库中的datetime或time包。并且你可以假设year大于等于1970。
更新:num超过一年的总天数视为不正确。
更新:之前写错了是整数不是正整数。这题大家可以提交超过3次。
输入
year num
输出
(y, m, d)
样例输入
2019 1
样例输出
(2019, 1, 1)
ls_1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
ls_run = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
def is_run(year):
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
return True
else:
return False
def date(year, num):
ls = ls_1
num_of_year = 365
if is_run(year):
ls = ls_run
num_of_year = 366
if num > num_of_year or num <= 0:
return None
sum_day = 0
mon = 1
while sum_day + ls[mon - 1] < num:
sum_day += ls[mon - 1]
mon += 1
day = num - sum_day
return year, mon, day
year, num = map(int, input().split())
print(date(year, num))