备战蓝桥杯Day37 - 真题 - 特殊日期

2024-04-08 10:28

本文主要是介绍备战蓝桥杯Day37 - 真题 - 特殊日期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、题目描述

 思路:

1、统计2000年到2000000年的日期,肯定是需要遍历

2、闰年的2月是29天,非闰年的2月是28天。我们需要判断这一年是否是闰年。

        1、3、5、7、8、10、12月是31天,4、6、9、11月是30天。

3、年份yy是月份mm的倍数也是dd的倍数:说明年份yy对月份mm和dd要同时整除

4、因为是一道填空题,我们可以不考虑算法的时间和空间复杂度的限制,使用暴力直接解决。

代码

import os
import sys# 请在此输入您的代码
def isLeap(x):  # 判断是否为闰年if (x % 4 == 0 and x % 100 != 0) or x % 400 == 0:return Truereturn Falsedef numAdd(x):  # 计算年份个数位的数字和sums = 0while x:sums += x % 10x //= 10return sumsstart, end = 1900, 9999
ans = 0
day = [1, -2, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1]  # 每个月天数和30天的差值
data = []
hstable = dict()  # key:月份1~12,value:每个月份月份数位和+日的数位和的区间,如1月份为(2, 32)
for j in range(1,32):  # 计算日数位和data.append(numAdd(j))
for i in range(1, 13):  # 初始化哈希表t = numAdd(i)  # 月数位和for j in range(day[i - 1] + 30):  # 遍历一个月的每一天将月数位和加上日数位和addt = t + data[j]if addt not in hstable:hstable[addt] = 1else:hstable[addt] += 1  # 哈希表中对应的天数加一for i in range(start, end + 1):  # 遍历每一年yearsum = numAdd(i)  # 计算年的数位和if yearsum in hstable:  # 若年的数位和在哈希表中存在则答案加上对应的天数ans += hstable[yearsum]if isLeap(i) and yearsum == 13:  # 闰年2月份多一天,位数和为13ans += 1print(ans)

本来想自己尝试写一下,但是结果不对,还是先学习一下大佬的吧。因为清明节放假,根本不想学习,玩完之后有戒断反应,非常失落现在。唉,还有六天就到省赛了,咱们就是说顺其自然吧,我已经不抱希望获奖了哈哈,自己的能力还是不够,还是要多学习啊。学习的过程比结果更重要!(好吧只能这样安慰自己了)

这篇关于备战蓝桥杯Day37 - 真题 - 特殊日期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885324

相关文章

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

javaScript日期相加减例子

当前时间加上2天 var d = new Date(“2015-7-31”); d.setDate(d.getDate()+2); var addTwo=d.getFullYear()+”年”+(d.getMonth()+1)+”月”+d.getDate()+”日”; “控制台输出===============”+”当前日期加2天:”+addTwo; 使用这种方法,月份也会给你计算.

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

特殊JSON解析

一般的与后台交互;都会涉及到接口数据的获取;而这里的数据一般情况就是JSON 了;JSON 解析起来方便;而且数据量也较小一些;所以JSON在接口数据返回中是个很不错的选择。 下面简单说下JSON解析过程中的一些案例: 这里我用到了三方的架包:fastjson-1.1.39.jar 架包 可以在我的博客中找到下载;或者网上找下 很多的; 这里主要就是映射  关系了;这就要求:实体类的名称和

linux下修改系统日期与时间

cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i

时间日期与时间戳转换(Linux C)

本文主要学习三个知识点,第一是UTC时间、GMT时间的概念;第二是在Unix环境下UTC时间与时间戳的转换;第三是在C语言中如何修改时区。 本文参考了《UNP》以及 http://blog.csdn.net/foxir/article/details/43916601 http://blog.csdn.net/ljafl9988/article/details/16847935 一、

Java中计算两个日期间隔多少天

String dbtime1 = "2017-02-23";  //第二个日期 String dbtime2 = "2017-02-22";  //第一个日期 //算两个日期间隔多少天 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = format.parse(dbtime1); Date dat