蓝桥杯题目-回文日期

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
// 闰年 
int run(int y){
	if(y%4==0 && y%100!=0 && y%400==0){
		return 1;
	}
	return 0;
}
// 天数
int mon(int m,int y){
	switch(m){
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			return 31;
		case 4:
		case 6:
		case 9:
		case 11:
			return 30;
		case 2:
			if(run(y)==1) return 29;
			else return 28;
	}
} 
// 判断回文
int HuiWen(string data){
	for(int i=0;i<4;i++){
		if(data[i]!=data[7-i]){
			return 0;
		}
	}
	return 1;
}

//判断ababbaba 
int abab(string data){
	if(HuiWen(data)==0) return 0;
	if(data[0]==data[2] && data[1]==data[3]) return 1;
}
int main()
{
  string m[] = {"01","02","03","04","05","06","07","08","09","10","11","12"};
  string d[32];
  string data;
  int y;
  cin >> data;
  // 截取年份 
  y = stoi(data.substr(0,4));
  // 天数填入 
  for(int i=1;i<=31;i++){
    if(i<10) d[i] = '0'+to_string(i);
    else{
      d[i] = to_string(i);
    }
  }
  string hw="",ab,newy;
  int HF=1;
  //遍历年份 
  while(1){
  	y++;
  	//12个月 
  	for(int i=0;i<12;i++){
  		//天数
		   for(int j=1;j<=mon(i+1,y);j++){
		   	newy = to_string(y)+m[i]+d[j];
		   	if(HuiWen(newy)==1 && HF==1){
		   		hw=newy;
		   		HF=0;
			   } 
		   	if(abab(newy)==1){
		   		ab=newy;
		   		cout<< hw <<endl;
		   		cout<< ab;
		   		exit(1);
			   } 
		   }
	  }
  }
  
  return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_62480054/article/details/131585864