当前位置: 首页 > 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.dtcms.com/a/129309.html

相关文章:

  • Seleuinm之javascript语句执行
  • React Hooks: useRef,useCallback,useMemo用法详解
  • Python中内置的数据结构类型详析(内置数据容器)
  • 【Java集合】HashSet源码深度分析
  • [python]从whl文件名认识支持python版本和操作系统
  • 第二十二: go与k8s、docker相关编写dockerfile
  • 策略模式实现 Bean 注入时怎么知道具体注入的是哪个 Bean?
  • Java中的static都能用来修饰什么?
  • 【强化学习-蘑菇书-2】通过具体的例子来学习如何与 Gym 库进行交互——小车上山(MountainCar-v0)
  • idea开发工具多账号使用拉取代码报错问题
  • 探秘 HTML5 Geolocation:精准定位用户位置,拓展网页交互边界
  • Redis-数据类型
  • AF3 ProteinDataset类的get_anchor_ind方法解读
  • 基于生成对抗网络(GAN)的手写数字生成实践
  • 了解SpringAOP
  • 【React】React-toolkit
  • java设计模式-组合模式
  • 路由交换网络专题 | 第二章 | RIP | OSPF | 路由聚合 | 路由过滤 | 静默接口
  • Linux上位机开发实践(底板设计)
  • matlab与dsp28335联调
  • MySQL索引介绍
  • 什么是VLA
  • 【数据结构】HashMap源码 —— 简单介绍
  • 人工智能之数学基础:奇异值分解SVD
  • JAVA SDK通过proxy对接google: GCS/FCM
  • 实测解析:FP7208 在汽车照明、摄影照明、教育照明以及太阳能照明等不同市场领域的典型应用参数解析和案例分析
  • Kingbase 常用运维命令总结
  • Vue的学习总结-day02
  • Pinyin4j修仙指南:从汉字到拼音的声韵转换大法
  • 部署Fish-Speech实现声音克隆及文本转语音