P8716 [蓝桥杯 2020 省 AB2] 回文日期
1 题目阐明https://i-blog.csdnimg.cn/direct/d92a554c49bf4dfe857724d43cbee1cd.png
2 题目分析
暴力不会超时,O(n)的时间复杂度, < 1 0 8 <10^8 <108。分析见代码:
#include<iostream>
#include<string>
using namespace std;
int m={0,31,28,31,30,31,30,31,31,30,31,30,31};
// 判断日期是否有效
bool valid(int date){
int year=date/10000;
int month=date%10000/100;
int day=date%100;
// 判断闰年
if(year%400==0||year%4==0&&year%100!=0) m=29;
else m=28;
// 判断month和day是否在范围内
if(month<=12&&month>0&&day<=m&&day>0) return true;
return false;
}
// 判断是否是回文日期
bool isPalindrome(string d){
for(int i=0;i<8;i++)
if(d!=d) return false;
return true;
}
// 判断是否为ABABBABA型日期
bool isABABBABA(string d){
// 判断回文在判断ABABBABA之前,只需要证明该回文日期的前半部分符合ABAB就行。
if(d==d&&d==d) return true;
return false;
}
int main(){
int n;
cin>>n;
int flag=0;
for(int i=n+1;;i++)
if(valid(i)&&isPalindrome(to_string(i))){
if(!flag){
cout<<i<<endl;
flag=1;
}
if(isABABBABA(to_string(i))){
cout<<i;
break;
}
}
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]