蓝桥杯之日期题

news/2025/2/26 22:15:53

文章目录

    • 1.蓝桥杯必备知识点
    • 2. 题型1
    • 3.需求2

1.蓝桥杯必备知识点

蓝桥杯是一个面向全国高校计算机相关专业学生的学科竞赛,涵盖多个赛道,常见的有软件类(如 C/C++ 程序设计、Java 软件开发、Python 程序设计)和电子类(如嵌入式设计与开发、单片机设计与开发等)。以下为你分别介绍软件类和电子类省赛的必备知识点:
软件类
编程语言基础

C/C++
    基本语法:变量、数据类型(如整型、浮点型、字符型、指针等)、运算符、控制结构(如 if-else、for、while 循环)等。
    函数:函数的定义、调用、参数传递(值传递、指针传递、引用传递)。
    数组和字符串:数组的定义、初始化、访问,字符串的处理(如字符串的输入输出、字符串函数的使用)。
    结构体和联合体:结构体和联合体的定义、使用,结构体数组等。
    文件操作:文件的打开、读写、关闭操作。
Java
    基本语法:变量、数据类型、运算符、控制语句。
    面向对象编程:类、对象、继承、多态、封装等概念,以及类的定义、方法的使用。
    字符串处理:String 类、StringBuilder 类的使用。
    集合框架:List、Set、Map 等集合的使用,以及迭代器的遍历。
    异常处理:try-catch-finally 语句的使用。
Python
    基本语法:变量、数据类型(如列表、元组、字典、集合)、控制流语句。
    函数和模块:函数的定义和调用,模块的导入和使用。
    文件操作:文件的读写操作。
    面向对象编程:类和对象的创建,方法和属性的使用。

数据结构

数组:一维数组、多维数组的使用,数组的排序(如冒泡排序、快速排序)和查找(如二分查找)。
链表:单链表、双向链表的实现,链表的插入、删除、查找操作。
栈和队列:栈和队列的基本概念,栈的后进先出(LIFO)和队列的先进先出(FIFO)特性,以及栈和队列的实现和应用。
树:二叉树的遍历(前序、中序、后序遍历),二叉搜索树的基本操作。
图:图的表示(邻接矩阵、邻接表),图的遍历(深度优先搜索、广度优先搜索)。

算法

搜索算法:深度优先搜索(DFS)、广度优先搜索(BFS),常用于解决迷宫问题、路径搜索问题等。
动态规划:通过将原问题分解为相对简单的子问题,并保存子问题的解来避免重复计算,常用于解决最优子结构问题,如背包问题、最长公共子序列问题。
贪心算法:在每一步选择中都采取当前状态下的最优选择,期望通过局部最优达到全局最优,如哈夫曼编码、活动选择问题。
排序算法:除了上述提到的冒泡排序、快速排序,还需要掌握选择排序、插入排序、归并排序等排序算法的原理和实现。

数学知识

数论:质数的判断、最大公约数(GCD)和最小公倍数(LCM)的计算,以及同余定理等。
组合数学:排列组合的计算,常用于解决计数问题。

电子类
电路基础

电路元件:电阻、电容、电感等基本元件的特性和参数计算。
电路定律:欧姆定律、基尔霍夫定律(电流定律和电压定律)的应用。
电路分析方法:节点电压法、网孔电流法等电路分析方法。

单片机知识

单片机原理:单片机的基本结构、工作原理,如 CPU、存储器、I/O 接口等。
编程语言:常见的单片机编程语言为 C 语言,需要掌握单片机 C 语言的编程规范和技巧。
外设驱动:掌握单片机的各种外设驱动,如定时器、计数器、串口通信、中断系统等。

传感器与执行器

传感器:了解常见传感器的工作原理和使用方法,如温度传感器、光照传感器、加速度传感器等。
执行器:掌握执行器的控制方法,如电机驱动、继电器控制等。

PCB 设计基础

原理图设计:使用专业的 PCB 设计软件(如 Altium Designer)进行原理图的绘制。
PCB 布局布线:掌握 PCB 布局布线的基本原则和方法,避免电磁干扰等问题。

2. 题型1

在这里插入图片描述### 2.1代码

# @File: 14.星期一计数.py
# @Author: chen_song
# @Time: 2025-02-25 10:41
from datetime import datetime, timedelta

# 分割日期字符串为年、月、日
def divideToThreeParts(date):
    years = int(date[:4])
    month = int(date[4:6])
    day = int(date[6:8])
    return years, month, day

# 判断是否闰年
def isLeapYear(year):
    return (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0)

# 获取1 - 12月的天数
def getDaysOfMonthAccording2Year(month, year):
    if month in [1, 3, 5, 7, 8, 10, 12]:
        return 31
    if month in [4, 6, 9, 11]:
        return 30
    if month == 2:
        return 29 if isLeapYear(year) else 28

# 写一个函数实现对任意日期之间天数计算
def countDaysBetweenRandomDates(date1, date2):
    year1, month1, day1 = divideToThreeParts(date1)
    year2, month2, day2 = divideToThreeParts(date2)

    # 计算起始日期到当年年底的天数
    days1 = 0
    for m in range(month1, 13):
        if m == month1:
            days1 += getDaysOfMonthAccording2Year(m, year1) - day1
        else:
            days1 += getDaysOfMonthAccording2Year(m, year1)

    # 计算中间完整年份的天数
    days2 = 0
    for y in range(year1 + 1, year2):
        days2 += 366 if isLeapYear(y) else 365

    # 计算结束日期所在年份年初到结束日期的天数
    days3 = 0
    for m in range(1, month2):
        # 获取最后一年前几个月的天数
        days3 += getDaysOfMonthAccording2Year(m, year2)
    days3 += day2

    return days1 + days2 + days3

date1 = input()
year1, month1, day1 = divideToThreeParts(date1)
dateTime1 = datetime(year1, month1, day1)

# 获得第一个周一
while dateTime1.weekday() != 0:
    dateTime1 += timedelta(days=1)
date1 = dateTime1.strftime("%Y%m%d")

date2 = input()
year2, month2, day2 = divideToThreeParts(date2)
dateTime2 = datetime(year2, month2, day2)

# 检查第一个周一是否超过结束日期
if dateTime1 > dateTime2:
    result = 0
else:
    days = countDaysBetweenRandomDates(date1, date2)
    result = days // 7 + 1

print(result)

3.需求2

在这里插入图片描述## 3.1代码

from datetime import datetime

# 获取用户输入的日期
input_date = input()
a, b, c = map(int, input_date.split('/'))

# 定义日期范围
start_date = datetime(1960, 1, 1)
end_date = datetime(2059, 12, 31)

# 定义一个函数来判断日期是否合法
def is_valid_date(year, month, day):
    try:
        # 尝试创建日期对象,如果日期不合法会抛出 ValueError 异常
        date = datetime(year, month, day)
        return start_date <= date <= end_date
    except ValueError:
        return False

# 生成所有可能的日期组合  枚举
all_combinations = [
    (1900 + a, b, c), (2000 + a, b, c),
    (1900 + c, a, b), (2000 + c, a, b),
    (1900 + c, b, a), (2000 + c, b, a)
]

# 存储合法的日期
valid_dates = []
for year, month, day in all_combinations:
    if is_valid_date(year, month, day):
        valid_dates.append(datetime(year, month, day))

# 去除重复的日期并排序
unique_dates = sorted(set(valid_dates))

# 输出结果
for date in unique_dates:
    print(date.strftime("%Y-%m-%d"))


http://www.niftyadmin.cn/n/5869220.html

相关文章

docker 安装 seafile 企业云盘

以下是 Docker 安装 Seafile 的详细步骤&#xff0c;涵盖基础安装和常用配置&#xff1a; 一、准备工作 安装 Docker 和 Docker Compose 确保系统已安装 Docker 和 Docker Compose。 创建工作目录 mkdir ~/seafile && cd ~/seafile二、使用官方简化镜像 Seafile 提供…

《深度学习实战》第2集:卷积神经网络(CNN)与图像分类

《深度学习实战》第2集&#xff1a;卷积神经网络&#xff08;CNN&#xff09;与图像分类 引言 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是深度学习在计算机视觉领域的核心工具。从早期的 LeNet 到现代的 ResNet 和 Vision Transformer&#xf…

全市场大模型分类及对比分析报告

全市场大模型分类及对比分析报告 1. 引言 随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Models&#xff09;已成为推动AI进步的核心力量。大模型凭借其强大的计算能力和海量数据处理能力&#xff0c;在自然语言处理&#xff08;NLP&#xff09;、计算机视…

游戏引擎学习第121天

仓库:https://gitee.com/mrxiao_com/2d_game_3 重新介绍 Intel 架构代码分析器 接下来&#xff0c;我们展示了一个新的工具&#xff0c;这个工具用于分析处理器在执行代码时的表现。这个工具的工作方式是通过在可执行文件中插入标记&#xff0c;然后使用这些标记来分析和跟踪…

使用open-webui调用大模型

想要更进一步了解open-webui可以自行查资料,本文仅提供安装步骤。 一、<一定一定要!>安装python 3.11 使用其他版本会出现不兼容,最终下载失败 (本人,试过3.12和3.8两个版本,参考其他博主踩的坑,大概率只能使用3.11) 1、方法一:官网下载python3.11 链接…

【大厂AI实践】微软:基于预训练的自然语言生成在搜索与广告中的应用

【大厂AI实践】微软&#xff1a;基于预训练的自然语言生成在搜索与广告中的应用 &#x1f31f; 嗨&#xff0c;你好&#xff0c;我是 青松 &#xff01; &#x1f308; 自小刺头深草里&#xff0c;而今渐觉出蓬蒿。 NLP Github 项目推荐&#xff1a; 【AI 藏经阁】&#xff1a…

【qt计算器】

qt计算器 目录注释部分模块配置目标配置模板配置源文件配置头文件配置UI 文件配置1. 头文件保护宏2. 包含必要的头文件3. 命名空间声明4. 类的定义5. 构造函数和析构函数6. 私有槽函数7. 私有成员变量8. 头文件保护宏结束1. 包含头文件2. 构造函数 MainWindow::MainWindow(QWid…

【ISP】畸变校正 LDC

ISP&#xff08;Image Signal Processor&#xff0c;图像信号处理器&#xff09;中的 LDC&#xff08;Lens Distortion Correction&#xff0c;镜头畸变校正&#xff09;是一种用于校正镜头畸变的图像处理技术。镜头畸变是由于镜头的光学特性导致的图像失真现象&#xff0c;主要…