当前位置: 首页 > news >正文

算法题(123):回文日期

审题:

本题需要我们判断以八位数确定的日期范围中是否存在回文数

思路:
方法一:枚举法

1.确定枚举对象:

对象1:八位数日期,所需枚举次数:10^8

对象2:年,所需枚举次数:10^3

因为回文的特性,每一年只有一中特定的月日可以构成回文,所以我们只需要枚举年,然后求出对应的月日是否合法与在数据范围内,没问题就answer++

对象三:月日,所需枚举次数:372

我们枚举月日,然后根据月日反推回文情况下的年,这种情况下的日期是合法的,此时我们再判断是否在数据范围内,在就answer++

2.确定枚举顺序:

由于本题一定需要枚举所有情况,所以选择顺序即可

3.确定枚举类型:

普通枚举

解题:
 

#include<iostream>
using namespace std;
int date1, date2;
int day[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int answer;
int main()
{cin >> date1 >> date2;for (int i = 1; i <= 12; i++)//月份{for (int j = 1; j <= day[i]; j++)//日{int year = j % 10 * 1e3 + j /10 * 1e2 + i % 10 * 10 + i / 10;int num = year * 1e4 + i * 1e2 + j;if (num <= date2 && num >= date1){answer++;}}}cout << answer;return 0;
}

首先我们求出year:

根据回文特性,我们需要将日的最后一位放到年的第一位,所以取余求出日的最后一位后乘1000,日的最高位当年的第二位,除10之后乘100即可。月份求解同理

然后我们求出最终num:

将year乘10000放在八位数的前四位,剩下的月乘100,放在第五第六位,日就直接加上放在第七第八位

如果最后处于输入的数据范围内,answer++

记录详情 - 洛谷 | 计算机科学教育新生态


http://www.mrgr.cn/news/98168.html

相关文章:

  • yarn:error Error: certificate has expiredERR_OSSL_EVP_UNSUPPORTED解决
  • 09-设计模式 企业场景 面试题-mk
  • 【Docker基础】深入解析 Docker 存储卷:管理、绑定与实战应用
  • 安卓AssetManager【一】- 资源的查找过程
  • Maven工具学习使用(十)——生成项目站点
  • 条件变量condition_variable
  • LeetCode 解题思路 37(Hot 100)
  • matlab与dsp28335联调
  • 数据集 | 沥青路面缺陷目标检测
  • C++学习之金融类安全传输平台项目git
  • 【软考系统架构设计师】信息系统基础知识点
  • 【软考系统架构设计师】软件工程知识点
  • MySQL 面经
  • 08-JVM 面试题-mk
  • UDS名词解释及分析
  • 【软考系统架构设计师】系统配置与性能评价知识点
  • 文件操作和IO - 2
  • 【零基础实战】Ubuntu搭建DVWA漏洞靶场全流程详解(附渗透测试示例)
  • 07-并发线程 面试题-mk
  • ssh 免密登录服务器(vscode +ssh 免密登录)