您的位置:首页 > 科技 > IT业 > 温州网站开发技术_婚庆策划公司名字大全_网络推广公司简介_品牌seo培训咨询

温州网站开发技术_婚庆策划公司名字大全_网络推广公司简介_品牌seo培训咨询

2025/4/15 17:39:24 来源:https://blog.csdn.net/2301_79954395/article/details/147153885  浏览:    关键词:温州网站开发技术_婚庆策划公司名字大全_网络推广公司简介_品牌seo培训咨询
温州网站开发技术_婚庆策划公司名字大全_网络推广公司简介_品牌seo培训咨询

审题:

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

思路:
方法一:枚举法

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++

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com