蓝桥杯刷题day08——完全日期

1、题目描述

如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。

例如:2021年6月5日的各位数字之和为2+0+2+1+6+5=16,而16是一个完全平方数,它是4的平方。所以2021年6月5日是一个完全日期。

请问,从2001年1月1日到2021年12月31日中,一共有多少个完全日期?

2、解析

计算从2001年1月1日到2021年12月31日之间有多少个"完全日期",即日期中年、月、日的各位数字之和是一个完全平方数的日期。

20010101到20211231最大数位和是30,最小数位和是5,所以可以确定能满足的平方数只有9,16,25。首先将可能的完全平方数(9、16、25)存储在列表ls中。然后,使用datetime模块中的datetime和timedelta类来遍历从2001年1月1日到2021年12月31日的所有日期。在每个日期上,计算年、月、日的各位数字之和,如果和在ls列表中,则计数器c加1。最后输出c的值,即完全日期的数量。

3、python代码

python 复制代码
import datetime

ls=[9,16,25]
c=0
date1=datetime.datetime(2001,1,1)
d=datetime.timedelta(days=1)
while date1.year!=2022:
    if sum(map(int,str(date1.year)))+sum(map(int,str(date1.month)))+sum(map(int,str(date1.day))) in ls:
        c+=1
    date1+=d

print(c)

4、运行结果

相关推荐
huaCodeA7 小时前
Android面试-Flow相关
android·面试·职场和发展
JAVA社区8 小时前
Java进阶全套教程(三)—— Spring框架核心精讲
java·开发语言·spring·面试·职场和发展·mybatis
始三角龙8 小时前
LeetCode hoot 100 -- 缺失的第一个正整数
算法·leetcode·职场和发展
fqq38 小时前
java基础面试题目
面试·职场和发展
小江的记录本9 小时前
【Java并发编程】锁机制:volatile:JMM内存模型、可见性/禁止指令重排、内存屏障、单例模式中的应用(附《思维导图》+《面试高频考点清单》)
java·后端·python·mysql·单例模式·面试·职场和发展
_日拱一卒10 小时前
LeetCode:105从前序与中序遍历序列构造二叉树
算法·leetcode·职场和发展
天真小巫10 小时前
六年之约-2026.5.22
职场和发展
JAVA社区11 小时前
Java进阶全套教程(一)—— 数据框架Mybatis详解
java·开发语言·面试·职场和发展·mybatis
JAVA社区11 小时前
Java进阶全套教程(八)—— Docker超详细实战详解
java·运维·开发语言·docker·容器·面试·职场和发展
运筹vivo@12 小时前
3043. 最长公共前缀的长度(Leetcode 每日一题)
c++·算法·leetcode·职场和发展·每日一题