###########一种用存储换空间的方法,填空题不建议这样写
from datetime import date,timedelta
from time import time
from copy import deepcopy
a = time()
#135781012 31 7个
dic = {}
for ii in [1,3,5,7,8,10,12]:
for jj in range(1,32):
tem = dig(ii) + dig(jj)
if dic.get(tem):
dic[tem] +=1
else:
dic[tem] = 1
#4,6,9,11 30 4个
for ii in [4,6,9,11]:
for jj in range(1,31):
tem = dig(ii) + dig(jj)
if dic.get(tem):
dic[tem] +=1
else:
dic[tem] = 1
#run
run = deepcopy(dic)
for ii in [2]:
for jj in range(1,30):
tem = dig(ii) + dig(jj)
if run.get(tem):
run[tem] +=1
else:
run[tem] = 1
#ping
ping = deepcopy(dic)
for ii in [2]:
for jj in range(1,29):
tem = dig(ii) + dig(jj)
if ping.get(tem):
ping[tem] +=1
else:
ping[tem] = 1
#2 闰年29 平年28 1个
def is_leap_year(year):
"""
判断给定年份是否为闰年。
参数:
year (int): 待判断的年份。
返回值:
bool: 如果是闰年返回 True,否则返回 False。
"""
if year % 4 != 0:
return False # 年份不能被 4 整除,直接判断为平年
elif year % 100 == 0:
if year % 400 == 0:
return True # 年份能被 100 整除但同时能被 400 整除,是闰年
else:
return False # 年份能被 100 整除但不能被 400 整除,是平年
else:
return True # 年份能被 4 整除但不能被 100
count = 0
for i in range(1900,9999):
tem = dig(i)
if tem <= 20:
if is_leap_year(i):
count += run.get(tem,0)
else:
count += ping.get(tem,0)
bb= time()-a
print(count,bb)
问题描述 对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天?
最新推荐文章于 2025-02-01 20:33:29 发布
本文介绍了一个Python程序,通过日期组合来创建一个字典并计数,特别关注闰年的处理。程序计算了1900年至9999年间,闰年和非闰年对存储空间的需求差异。

933

被折叠的 条评论
为什么被折叠?



