/思路:回文日期由年月日组成,如果对两个时间点中的所有日期都进行枚举,
将会多做很多的无用功,细心一点我们可以发现其实总共能形成回文日期的个数并不多,
那么如果只对月日能形成的回文日期全部例举出来,判断是否在给定区间内,
在区间内就进行计数,否则不计,最后将计的数输出即可/
//笱蒻第一篇题解,有问题请指正;
//代码如下:
#include<iostream>
using namespace std;
int r[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//月份从一月开始,数组中一月的天数就存在r[1]中;
//因为是直接通过月日回文来找年,所以2月直接存29,不用进行闰年判断;
int main(){
int m,n,sum,number=0;
cin>>m>>n;//输入两个端点; </iostream>
for(int i=1;i<=12;i++) for(int j=1;j<=r[i];j++){ int c=j%10*1000+j/10*100+i%10*10+i/10; int sum=c*10000+i*100+j; //将所有的回文日期全部例举出来,通过if判断计数; if(sum>=m&&sum<=n){ number++; } } cout<<number<<endl;//输出计数即可; return 0;
}