python 蓝桥杯模拟赛 时间计算

 

不知天上宫阙,今夕是何年。

对于完美日期yyyy/mm/dd,wlxsq的定义是:

年月日中均没有出现数字4,
年月日的数位之和是8的倍数
例如:2020/02/02 就是一个完美日期,没有出现数字4,且数位之和是8的倍数。

wlxsq想知道从2020/02/22开始,第88个完美日期是哪个?
 

#设置初始值
y = 2020
m = 2
d = 2
#设置俩个月份,能被4整除的年份二月份有29天
day_1 = [31,28,31,30,31,30,31,31,30,31,30,31]
day_2 = [ 31,29,31,30,31,30,31,31,30,31,30,31]
ans = 0
#查找第88个
while ans < 88:
    #排除包含 4 的年月日
    if '4' not in str(y) and '4' not in str(m) and '4' not in str(d):
        #获取年月日单独分开数字之和
        if (int(str(y)[0])+int(str(y)[1])+int(str(y)[2])+int(str(y)[3])+
                int(str(m).zfill(2)[0])+int(str(m).zfill(2)[1])+int(str(d).zfill(2)[0])+(int(str(d).zfill(2)[1]))) % 8 == 0:
            ans += 1
            print("第",ans)
            print(y, m, d)
    #找不到,天书加一
    d += 1
    #闰年
    if y % 4 == 0:
        #是否天数大于月份应存在数
        if d >day_2[m-1]:
            m += 1
            d = 1
    #非闰年
    if y % 4 != 0:
        if d >day_1[m-1]:
            m += 1
            d = 1

    if m > 12:
        m = 1
        y += 1

如何有错误的话欢迎指出,会马上改正,非常少感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值