思路解析
本题与洛谷的 P 2010 [ N O I P 2016 普及组 ] 回文日期 P2010 [NOIP2016 普及组] 回文日期 P2010[NOIP2016普及组]回文日期相类似,通过这道题可以学会的是,我们可以构造回文数,然后判断该回文日期是否符合实际情况。
- 构造回文数
- 判断回文日期是否符合真实情况
- 判断回文日期是否是 A B A B B A B A ABABBABA ABABBABA类型
- 符合则输出答案
P2010 [NOIP2016 普及组] 回文日期
#include<stdio.h>
#include<queue>
#include<vector>
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<stack>
#include<limits.h>
#include<string.h>
#include<math.h>
#include<map>
#define int long long
using namespace std;
int data1;
int data2;
int ans;
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int check(int data){
int year=data/10000;
int month=data%10000/100;
int day=data%100;
if(month<=0||day<=0||month>=13){
return 0;
}
if(month!=2){
if(day>months[month]){
return 0;
}
}
if(month==2){
if((year%4==0&&year%100!=0)||year%400==0){
if(day>29){
return 0;
}
}
else{
if(day>28){
return 0;
}
}
}
return 1;
}
signed main(){
scanf("%lld %lld",&data1,&data2);
for(int i=1000;i<10000;i++){
int l=i,r=i;
for(int j=1;j<=4;j++){
l=l*10+r%10;
r/=10;
}
if(l>=data1&&l<=data2&&check(l)){
ans++;
}
}
printf("%lld\n",ans);
return 0;
}
[蓝桥杯 2020 省 AB2] 回文日期
#include<stdio.h>
#include<queue>
#include<vector>
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<stack>
#include<limits.h>
#include<string.h>
#include<math.h>
#include<map>
#define int long long
using namespace std;
int data1;
int data2;
int ans;
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int flag;//标记第一个回文日期是否输出
int check1(int data){
int year=data/10000;
int month=data%10000/100;
int day=data%100;
if(month<=0||day<=0||month>=13){
return 0;
}
if(month!=2){
if(day>months[month]){
return 0;
}
}
if(month==2){
if((year%4==0&&year%100!=0)||year%400==0){
if(day>29){
return 0;
}
}
else{
if(day>28){
return 0;
}
}
}
return 1;
}
int check2(int data){
int year=data/10000;
int month=data%10000/100;
int day=data%100;
if(month==day){
return 1;
}
return 0;
}
signed main(){
scanf("%lld",&data1);
for(int i=1000;i<10000;i++){
int l=i,r=i;
for(int j=1;j<=4;j++){
l=l*10+r%10;
r/=10;
}
if(l>data1&&check1(l)){
if(flag==0){
flag=1;
printf("%lld\n",l);
}
if(check2(l)){
printf("%lld\n",l);
break;
}
}
}
return 0;
}```
标签:return,P8716,int,31,month,蓝桥,AB2,include,回文
From: https://blog.csdn.net/2301_80129631/article/details/136994179