特殊日期。

2023-12-16 23:30:08

问题描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和也可以分别计算月和日的各位数字之和。请问从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 datetime

a = 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 += 1
    q = 0
    w = 0
    a += c
print(count)

文章来源:https://blog.csdn.net/weixin_72050316/article/details/135039228
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。