题意概括+思路讲解:
给我们2个8位数,两个8位数之间有多少个回文数,这里要注意因为是日期,不能挨个遍历。所以我们可以定义一个数组,根据洛谷管理员给的提示,可以知道判断后四位(月份+日期)会更快。然后看求出日期是否是我们需要的就行了,至于回文就一个数或字符串正着读或反着读都一样就叫回文。接下来上代码。
Code
#include <bits/stdc++.h>
using namespace std;
int i,j,n,m,a,b,c,sum,ans;
int s[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//因为从1开始遍历,所以下标0位置设0
int main(){
cin >> n >> m;
for (i=1;i<=12;i++){
for (j=1;j<=s[i];j++){
c=(j%10)*1000+(j/10)*100+(i%10)*10+(i/10);
sum=c*10000+i*100+j;
if (sum<n||sum>m){
continue;
}
ans++;
}
}
cout << ans;
return 0;
}