社区讨论
暴力求解居然满分过了?
P2010[NOIP 2016 普及组] 回文日期参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lupg1vdi
- 此快照首次捕获于
- 2024/04/07 19:32 2 年前
- 此快照最后确认于
- 2024/04/07 20:52 2 年前
我的思路原本是
先看看暴力枚举能拿多少分
然后再试试怎么去优化结果就AC了?
然后再试试怎么去优化
真的是纯纯暴力枚举
CPP#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;
}
在闰年的时候加了一个判定
后面回溯了一下
后面回溯了一下
总之,这道题纯模拟还是挺适合新手食用的
回复
共 1 条回复,欢迎继续交流。
正在加载回复...