AcWing 466. 回文日期

原题链接

考察:枚举

错误思路:

       直接从a,枚举到b,如果不符合正常日期就continue

本蒟蒻TLE了,这方法可能有卡常大神能过吧...

正确思路:

       构造回文日期,如果在[a,b]区间内就ans++.

注意的是0229这个时间,虽然9220属于闰年但是不要忘记考虑.

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <string>
 5 using namespace std;
 6 const int N = 10;
 7 int month[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
 8 int main()
 9 {
10     int a,b,ans= 0;
11     scanf("%d%d",&a,&b);
12     for(int i=1;i<=12;i++)
13       for(int j=1;j<=month[i];j++)
14       {
15           string s; char c;
16           int t = j+i*100;
17           int k = (i/10+i%10*10+j/10*100+j%10*1000)*10000;
18           k+=t;
19           if(k<=b&&k>=a) ans++;
20       }
21     printf("%d\n",ans);
22     return 0;
23 }

 

posted @ 2021-02-24 22:17  acmloser  阅读(48)  评论(0编辑  收藏  举报