蓝桥杯 — — 完全日期

完全日期

友情链接:完全日期

题目:

在这里插入图片描述

思路:

直接从20010101枚举到20211231,然后再判断每一个数是否是一个合法的日期,如果这个日期是合法的,接着判断这个日期的每一个位置上的数字之和是否是一个完全平方数即可。

  1. 判断日期是否合法:

    可以使用一个数组来记录所有的月份对应的天数,存在特例:2月在闰年的时候是29天,在平年的时候是28天。我们可以在每次判断是闰年的时候将数组中2月份的值更改为29天,然后判断完后再将其进行恢复为28天。

    判断闰年:这个年份能对400整除或者这个年份能对4整除且不能整除100


  2. 判断是否是一个完全平方数:

    因为对于给定范围的年份,其范围是有限的,对于这道题给出的日期一共有8位数,也就是说每个位置上的数最大取的是9,最小取的是0,对应的所有位置最大值的和是 8 × 9 8 \times 9 8×9,最小值的和0,为了更快的知道这个求和出来的值是否是一个完全平方数,我们可以使用一个哈希表将这些值的完全平方数进行存储下来,这样每次查找的时间就变为了 O ( 1 ) O(1) O(1),我们开辟大小为80的数组内存空间(80个大小是因为所有年份的完全平方数的范围为: 0 0 0 ~ 8 × 9 = 72 8 \times 9 = 72 8×9=72),对1 ~ 9的平方进行标记,表示该范围内的所有完全平方数。

代码:

// 完全日期
#include<iostream>
#include<string>
using namespace std;int hashMap[80];  // 定义一个哈希数组,用于记录完全平方数
int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 判断闰年
bool judge(int year, int month, int day){// 被400整除,被4整数并不被100整除if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0){months[2] = 29;}if(day > months[month] || day <= 0) return false;months[2] = 28;  // 恢复月份的状态return true;
} // 判断完全平方数
bool sqrtNum(int num){int temp = 0;while(num){temp += num % 10;num /=10;}if(hashMap[temp]){  // 查找到这个数是否为一个完全平方数return true;} return false;
}void solve(){const int cl = 20010101;const int cr = 20211231;int year,month,day;int ans = 0;for(int i = 1;i <= 9;i ++){hashMap[i * i] = 1;   // 初始化哈希数组}for(int i = cl; i <= cr;i ++){int temp = i;// 首先分割为年月日,不能对i直接进行分割,否则会导致死循环day = temp % 100;temp /= 100;month = temp % 100;if(month <= 0 || month > 12) continue;    // 如果月份不合法就直接进行跳过temp /= 100;year = temp;if(judge(year, month, day)){if(sqrtNum(i)){ans++;} }}cout<<ans<<endl;return ;
}int main(){ios::sync_with_stdio(false);cin.tie(0);int t = 1;while(t--){solve();}return 0;
} 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/2866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt——设置字体样式

在Qt中&#xff0c;你可以通过设置字体颜色来将文本显示为灰色。你可以使用QPalette对象为特定的控件或整个应用程序的控件设置颜色。以下是一个如何将按钮字体设置为灰色的示例&#xff1a; #include <QApplication> #include <QWidget> #include <QPushButto…

GPT-SoVITS声音克隆训练和推理(新手教程,附整合包)

环境: Win10 专业版 GPT-SoVITS-0421 整合包 问题描述: GPT-SoVITS声音克隆如何训练和推理教程 解决方案: Zero-shot TTS: Input a 5-second vocal sample and experience instant text-to-speech conversion.零样本 TTS:输入 5 秒的人声样本并体验即时文本到语音转换…

基于java的CRM客户关系管理系统的设计与实现

本科毕业设计(论文) 题 目&#xff1a; 基于java的CRM客户关系管理系统的设计与实现 专题题目&#xff1a; 说 明 请按以下顺序编排&#xff1a; 封面任务书开题报告中外文摘要及关键词目录正文附录&…

《深入浅出.NET框架设计与实现》笔记6.1——ASP.NET Core应用程序多种运行模式之一——自宿主(Self-Hosting)

ASP.NET Core应用程序可以在多种运行模式下运行&#xff0c;包括自宿主&#xff08;Self-Hosting&#xff09;、IIS服务承载、桌面应用程序、服务承载。 因此选择和时的模式很重要。 自宿主&#xff08;Self-Hosting&#xff09; 自宿主是指 ASP.NET Core 应用程序独立运行&a…

算法学习笔记Day9——动态规划初探

一、介绍 本文解决几个问题&#xff1a;动态规划是什么&#xff1f;解决动态规划问题有什么技巧&#xff1f;如何学习动态规划&#xff1f; 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法&#xff0c;只不过在计算机问题上应用比较多&#xff…

2024/4/24总结

js进阶 作用域 作用域分为全局作用域和局部作用域 局部作用域 分为块级作用域&#xff08; 就是使用 {} 包裹起来的代码称为代码块 &#xff09;和函数作用域&#xff08; 顾名思义就是函数包裹的部分 &#xff09; let 和 const 声明的常量会产生块级作用域 var不会产生…

maya显示隐藏 动画长度

目录 大纲视图&#xff0c;选择节点&#xff0c;H控制显示与隐藏 使用Viewport显示/隐藏 脚本控制显示/隐藏 获取动画长度python脚本 大纲视图&#xff0c;选择节点&#xff0c;H控制显示与隐藏 使用Viewport显示/隐藏 这是最直观的方法&#xff0c;适合临时隐藏Mesh以便专…

矩阵连乘算法

矩阵连乘&#xff1a; #include<iostream> #define inf 0x7fffffff using namespace std; int a[256] { 0 };//存储矩阵的行和列 int m[256][256] { 0 };//存储i到j的最少计算次数 int s[256][256] { 0 };//存储i到j的中转站k void m_print(int i, int j) {if (i …

Kubectl常见排查pod问题命令

一.查看命名空间pod及其日志 #查看命名空间pod kubectl get pods -n <命名空间名称> #该命令不加-n命名空间名称&#xff0c;默认是查看default命名空间的pod#查看对应pod的日志kubectl logs -f <pod-name> -n <namespace>#同样的如果查看的是default命名空…

如何在OpenWRT上配置SFTP远程文件传输

如何在OpenWRT上配置SFTP远程文件传输 OpenWRT 是一款广泛使用的开源路由器固件&#xff0c;它能够让普通的家用路由器具备高级路由功能&#xff0c;提供更多自定义和优化选项。本文将介绍如何在OpenWRT上配置SFTP&#xff08;SSH文件传输协议&#xff09;服务&#xff0c;以便…

简单工厂、工厂方法、抽象工厂对比

简单工厂、工厂方法和抽象工厂是三种常见的工厂设计模式&#xff0c;它们在软件设计中各有其独特的应用场景和优缺点。因为三种设计模式都属于工厂模式&#xff0c;在实际应用中可能存在误用的场景&#xff0c;这里对其做下对比&#xff0c;以便更好的理解这三种设计模式。 简…

.NET周刊【4月第2期 2024-04-21】

国内文章 他来了他来了&#xff0c;.net开源智能家居之苹果HomeKit的c#原生sdk【Homekit.Net】1.0.0发布&#xff0c;快来打造你的私人智能家居吧 https://www.cnblogs.com/hezp/p/18142099 三合是一位不喜欢动态编程语言的开发者&#xff0c;对集成米家智能家居到苹果HomeK…

Chisel3 入门 (1)

Chisel3 入门(1) 文章目录 Chisel3 入门(1)Chisel3 基本数据类型定义变量创建变量、常量 布尔逻辑类型转换Analog/BlackBox 类型 Chisel3 基本数据类型 chisel提供三种类型数据类型描述信号连接、组合逻辑、寄存器&#xff1a; Bits: 可表示 一个bit 向量UInt: 扩展自Bits, 表…

【Ant-Desgin-React 穿梭框】表格穿梭框,树穿梭框的用法

Antd Desgin 穿梭框 普通用法高级用法-表格穿梭框组件高级用法-树穿梭框组件 普通用法 /* eslint-disable no-unused-vars */ import React, { useEffect, useState } from react import { Space, Transfer } from antd// Antd的穿梭框组件Mock数据 const mockData Array.fro…

西安站开营!AI 编码助手通义灵码帮大学生“整活儿”

如何更好地与 AI 为伴&#xff0c;做时代的先进开发者&#xff1f;4 月 17 日&#xff0c;阿里云推出的 AI 编程助手通义灵码与云工开物“高校训练营”走进西安多所高校开启实操培训&#xff0c;结合 AI 辅助编程的发展背景、通义灵码的具体能力和应用实操&#xff0c;帮助在校…

全世界IT人苦竞业久矣!美国FTC宣布全面废除员工竞业协议

2023 年 1 月&#xff0c;美国联邦贸易委员会&#xff08;FTC&#xff09;发布声明称&#xff0c;拟在全国范围禁止用人单位与雇员签订竞业禁止性条款。当地时间 4 月 23 日&#xff0c;FTC 宣布全面禁止所有员工&#xff08;包括高级管理人员&#xff09;签署新的竞业禁止协议…

js生成不同的阅读数分配到每一篇上面,不会因为刷新而变动

js生成不同的阅读数分配到每一篇上面,不会因为刷新而变动 {%- for article in blog.articles -%}<div class"blog-articles__article article">{%- render article-card,article: article,media_height: section.settings.image_height,media_aspect_ratio: a…

在Ubuntu上配置CUDA基础环境

一、安装驱动 1、检查硬件支持的驱动列表&#xff1a; # 桌面版本 sudo ubuntu-drivers list # 服务器版本 sudo ubuntu-drivers list --gpgpu可以看到这样的驱动名称列表&#xff1a; nvidia-driver-470 nvidia-driver-470-server nvidia-driver-535 nvidia-driver-535-ope…

xilinx Mailbox 中的ipi message地址计算方式

适用于openAmp mailbox ipi id对应的ipi message地址计算方式 官方openamp硬件配置解析 OpenAMP Base Hardware Configurations - Xilinx Wiki - Confluence openamp官方设备树 meta-openamp/meta-xilinx-tools/recipes-bsp/device-tree/files/zynqmp-openamp.dtsi at rel-v2…

SpringBoot+Vue开发记录(四)

说明&#xff1a; 本篇文章的主要内容是软件架构以及项目的前端Vue创建 一、软件架构 我道听途说的&#xff0c;听说这个东西很关键很重要什么的。 软件架构&#xff08;software architecture&#xff09;是一个系统的草图,是一系列相关的抽象模式&#xff0c;用于指导大型软…