先看看暴力枚举能拿多少分
然后再试试怎么去优化 结果就AC了?
#include <iostream>
using namespace std;
bool flag;
int st, en, i, j, k, ans;
int mon[20] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main()
{
cin >> st >> en;
i = st / 10000, j = st / 100 % 100, k = st % 100;
do
{
if(i % 4 == 0 && (i % 400 == 0 || i % 100 != 0))
{
flag = 1;
mon[2]++;
}
for( ;j <= 12; j++)
{
for( ;k <= mon[j];k++)
{
int moment = i * 10000 + j * 100 + k, _return = 0, _moment = moment;
// 回文
while(moment != 0)
{
_return *= 10;
_return += moment % 10;
moment /= 10;
}
if(_return == _moment)
ans++;
if(_moment == en)
{
cout << ans;
return 0;
}
}
k = 1;
}
j = 1;
if(flag)
{
flag = 0;
mon[2]--;
}
i++;
}while(i <= en / 10000);
cout << ans;
return 0;
}
在闰年的时候加了一个判定
后面回溯了一下