[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;

}

posted @ 2022-08-14 16:29  shanyingrui  阅读(120)  评论(0编辑  收藏  举报