问题描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和也可以分别计算月和日的各位数字之和。请问从1900年1月1日至9999年12月31日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022年11月13日满足要求,因为2+0+2+2(1+1)+(1 +3)
请提交满足条件的日期的总数量
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
方法一:运行时间过长不能通过只能最后打印
import os
import sys# 请在此输入您的代码
# def satisfy(n):
# sum=0
# while n :
# sum+=n%10
# n//=10
# return sum# days=[0,31,28,31,30,31,30,31,31,30,31,30,31]
# cnt=0
# for year in range(1900,9999):
# if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
# days[2]=29
# else:
# days[2]=28
# for i in range(1,13):
# for j in range(1,days[i]+1):
# if satisfy(year)==satisfy(i)+satisfy(j):
# cnt+=1# print(cnt)
print(70910)
方法二:调用库
import os
import sys# 请在此输入您的代码
import datetimea = datetime.date(1900, 1, 1)
b = datetime.date(9999, 12, 31)
c = datetime.timedelta(days=1)
q = 0
w = 0
count = 0
while a != b:y = str(a.year)md = str(a.month) + str(a.day)for i in range(len(y)):q += int(y[i])for j in range(len(md)):w += int(md[j])if w == q:count += 1q = 0w = 0a += c
print(count)