返回题解分享
讨论 / 题解分享/ 帖子详情

回文日期(编程题) - 题解

#include <bits/stdc++.h>

using namespace std;
bool isValid(int date){//判断日期是否合法

	int year = date/10000;

	int month = (date%10000)/100;

	int day = date%100;


	if(month <1 || month>12) return false;

	if(day<1) return false;


	if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){

		if(day>31) return false;

	}else if(month==4 || month==6 || month==9 || month==11){

		if(day>30) return false;

	}else if(month==2){

		if((year%4==0 && year%100!=0) || year%400==0) {

            if(day>29) return false;

        }else{

            if(day>28) return false;

        }

	}

	return true;

}



bool is\_huiwen(string str)//判断是否是回文数

{

	string temp = str;

	reverse(temp.begin(),temp.end());

	return str==temp;

}



bool is\_abab(string str)//判断是否是abab型数

{

	return str[0] == str[2] && str[1] == str[3] && is\_huiwen(str);

}	



int main()

{

	int n;

	cin>>n;

	string first\_huiwen,first\_abab;

	while(1)

	{

		n++;

		if(!isValid(n)) continue;

		string str = to\_string(n);

		if(is\_huiwen(str)&&first\_huiwen.empty()){

			first\_huiwen = str;

		}

		if(is\_abab(str)&&first\_abab.empty()){

			first\_abab = str;

		}

		if(!first\_huiwen.empty()&&!first\_abab.empty()){

			break;

		}

	}

	cout<<first\_huiwen<<endl<<first\_abab<<endl;

	return 0;

}
0 回复 0 转发 0 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!