当前位置: 首页 > 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++

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

相关文章:

  • 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联调
  • 英文网站建设维护/网址大全导航
  • 武汉做网站公司方讯/杭州专业seo
  • 上海企业模板建站/湖南网络推广机构
  • 做网站被用作非法用途/软文写手
  • 深圳网站建设公司fantodo/专门看广告的网站
  • 学php到做网站要多久/网站推广计划书