NC16438 回文日期

回文日期

https://ac.nowcoder.com/acm/problem/16438

题目大意:给两串长度为8的日期,输出两个日期中有多少个回文串
思路:一项一项枚举应该是不太行的,要枚举千万次。比较好的思路还是先只看月日,因为是回文,那么年就确定了,就这样存下366个回文日期,输出时输出第一二个日期中间有多少个回文日期即可
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;</algorithm></iostream>

int main()
{
int date[366];
int month[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int i,k=0;
for(i=0;i<12;i++){
int c=i+1;//月份
for(int j=1;j<=month[i];j++){
int t=10000000;
int b=j%10t;
t/=10;
b+=j/10
t;
t/=10;
date[k++]=b+c%10t+c/10t/10+j+c*100;//储存日期
}
}
sort(date,date+366);
int a,b;
cin>>a>>b;
for(i=0;i<366;i++){
if(a<date[i]){/
break;
}
}
int j=0;
for(j=i;j<366;j++){
if(b<date[j]){
break;
}
}
if(date[i-1]==a){//考虑边界情况
i--;
}
cout<<j-i;
return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务