[2016年NOIP普及组] 回文日期
[2016年NOIP普及组] 回文日期
思路:一个 8 位数字是回文的,也就是对于所有的 i(1≤i≤8 )从左向右数的第 i 个数字和第 9-i 个数字(即从右向左数的第i个数字)是相同的。那么每年都最多有一个回文日期。可以将每天所对应的回文日期求出来,最后直接与题目所给范围比较,用计数器记录符合题意的回文日期个数。
代码如下:
#include<iostream>
using namespace std;
int i,j,n,m,a,b,c,sum,ans=0;
int s[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int main()
{
cin>>n>>m;
for(int i=1;i<=12;i++)//月
for(j=1;j<=s[i];j++)//日
{
c=(j%10)*1000+
(j/10)*100+
(i%10)*10+
(i/10);//算出前4位
sum=c*10000+i*100+j;//算出整个日期
if(sum<n||sum>m) continue;//超出时间范围就退出本轮循环,也可以理解为不在所给范围里的拿掉,剩下的就是符合题意的
ans++;//统计
}
cout<<ans<<endl;
return 0;
}