点击查看代码
#include<bits/stdc++.h>
using namespace std;
int data1, data2, ans = 0, sum;
int d[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main()
{
cin >> data1 >> data2;
for (int i = 1; i <= 12; i++) {
for (int j = 1; j <= d[i]; j++) {
int c = (j % 10) * 1000 + (j / 10) * 100 + (i % 10) * 10 +
(i / 10);
sum = c * 10000 + i * 100 + j;
if (sum >= data1 && sum <= data2) ans ++;
}
}
cout << ans;
return 0;
}
这道题需要找出所有处在 date1 和 date2 之间的回文日期,一个比较巧妙的思路是,由于日期都是 8 位的,我们可以从末尾的月和日这 4 位入手,因为回文日期需要满足前 4 位和后 4 位完全相同,所有我们可以枚举出月和日的所有可能组合,然后计算出对应的回文日期的年份,并按照“ 年 + 月 + 日 ”的形式存到一个 sum 变量中,如果 sum 变量位于 date1 和 date2 之间,就把结果变量 ans ++ ,这样,把月和日遍历完之后, ans 就等于处在 date1 和 date2 之间的回文日期数。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章