这道题是2016年普及组的题,难度等级为普及—。

这道题仍然是个模拟题。有两种策略:1.枚举回文,看日期是否存在2.枚举日期,看是否是回文。显然,前者要快很多,并且准确。本蒟蒻第一次便使用了后者,bug频出,看了题解后想到了前者。并且在取位与字符串处理上出了问题qaq。最后被卡了几个数据点......

1.字符串中转int:-48即可。
2.调bug的时候可以规范输出来查错误。
3.模拟题一定要思考好for谁快。
4.模拟题思路一定要清晰,别先动键盘,先动笔,确定好有把握的策略。

伪代码:
string str1,str2;
int year1,year2;
int month1,month2;
int day1,day2;
int ans=0;
int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int rday[12]={31,29,31,30,31,30,31,31,30,31,30,31};
bool judge_r(int x){
if(x%400==0||(x%4==0&&x%10!=0)){
return true;
}
else return false;
}
int main(){
cin>>str1;
cin>>str2;
year1=(str1[0]-48)1000+(str1[1]-48)100+(str1[2]-48)10+(str1[3]-48);
year2=(str2[0]-48)
1000+(str2[1]-48)100+(str2[2]-48)10+(str2[3]-48);
month1=(str1[4]-48)10+(str1[5]-48);
month2=(str2[4]-48)
10+(str2[5]-48);
day1=(str1[6]-48)10+(str1[7]-48);
day2=(str2[6]-48)
10+(str2[7]-48);
/cout<<year1<<month1<<day1<<endl;
cout<<year2<<month2<<day2<<endl;
/
for(int i=year1;i<=year2;i++){
int month=(i%10)10+(i%100)/10; //回文
int date=i/1000+((i%1000)/100)
10;
// cout<<month<<" "<<date<<endl;
if(judge_r){//闰年不存在
if(month>12) continue;
if(date>rday[month]) continue;
}
else{//普通年不存在
if(month>12) continue;
if(date>day[month]) continue;
}
if(i==year1){//必须大于左端点
if(month<month1){
continue;
}
else{
if(month==month1&&date<day1){
continue;
}
}
}
if(i==year2){//必须小于右端点
if(month>month2){
continue;
}
else{
if(month==month2&&date>day2){
continue;
}
}
}
ans++;
}
cout<<ans;
return 0;
}

P2010回文日期的更多相关文章

  1. 洛谷 P2010 回文日期 题解

    P2010 回文日期 题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用88位数字表示一个日期,其中,前44位代表年份,接下来22位代表月 份,最后22位代表日 ...

  2. P2010 回文日期

    P2010 回文日期 题解 回文日期,一共8位,只需要枚举4位就好了其实,然后判断它是否合法 代码 #include<bits/stdc++.h> using namespace std; ...

  3. P2010 回文日期 题解

    这题其实就是纯暴力,暴力,再暴力,毫无技巧可言(总之您怎么乱搞都不会超时QAQ) 首先,根据题意,我们明白每年自多产生一个回文日期,因为对于每年的三百多天,前四位是固定的. 所以,我们只需要进行一个从 ...

  4. 洛谷 P2010 回文日期

    Noip2016普及组T2 题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月 份,最后2位代表日期 ...

  5. #P2010 回文日期 的题解

    题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用88位数字表示一个日期,其中,前44位代表年份,接下来22位代表月 份,最后22位代表日期.显然:一个日期只有 ...

  6. 洛谷 题解 P2010 【回文日期】

    因为有8个字符,所以可得出每一年只有一个回文日期. 因此只要判断每一年就行了. 做法: 我们先把年倒过来,例如2018年就倒为8102,就得出8102就是回文日期的后四个字符,我们只要判断一下有没有这 ...

  7. [洛谷] P2010 [NOIP2016 普及组] 回文日期

    点击查看代码 #include<bits/stdc++.h> using namespace std; int data1, data2, ans = 0, sum; int d[13] ...

  8. NOIP 2016 回文日期

    洛谷P2010 https://www.luogu.org/problemnew/show/P2010 JDOJ 3313 https://neooj.com:8082/oldoj/problem.p ...

  9. NOIP 普及组 2016 回文日期

    传送门 https://www.cnblogs.com/violet-acmer/p/9859003.html 题解: 思路1: 相关变量解释: year1,month1,day1 : date1对应 ...

随机推荐

  1. 【NOIP2016提高A组模拟9.15】Osu

    题目 分析 考虑二分答案, 二分小数显然是不可取的,那么我们将所有可能的答案求出来,记录在一个数组上,排个序(C++调用函数很容易超时,手打快排,时间复杂度约为\(O(>8*10^7)\),但相 ...

  2. tf.expand_dims和tf.squeeze函数

    from http://blog.csdn.net/qq_31780525/article/details/72280284 tf.expand_dims() Function tf.expand_d ...

  3. js-头部的下拉框出现与隐藏,注意加上stop??

    效果: 主要代码:

  4. windows如何禁用惹人烦的开机启动广告

    本地组策略编辑器 建立新的路径规则 重启电脑 本地组策略编辑器 你现在还在为那些烦人的互联网开机广告而发愁嘛,比如一下几种广告:这样的 还是这样的: 又或者是这样的: 修改了dns也并没有什么卵用,所 ...

  5. navicat_premium_x64最新版安装说明

    先到官网下载最新的navicat http://www.navicat.com.cn/ 下载破解文件 链接: https://pan.baidu.com/s/1hhsh5Tfe4c_lQeyX8D-C ...

  6. HBase 集群监控系统构建

    HBase 集群监控系统构建 标签(空格分隔): Hbase 一, 集群为什么需要监控系统 总的来说是为了保证系统的稳定性,可靠性,可运维性.具体来说我认为有以下几点: 掌控集群的核心性能指标,了解集 ...

  7. sqli-labs(30)

    0X01 观摩源码 和29关没区别 只是这里闭合变成了“ 0X02构造语句 爆库名 ?id=&id=-"union select 1,database(),3%23 0X03组合拳打 ...

  8. sqli-labs(27)

    0X01 先查询闭合 ?id=' 报错 ?id='' 正确 知道是’的闭合语句 0X02那么开始我们的注入之旅 空格过滤了 尝试一下%0a绕过  #也被过滤了 那么用and '1'='1构造闭合 ?i ...

  9. sqli-labs(21)

    cookie注入 引号和括号闭合 base64编码 0X01 看了题目应该是 cookie注入 闭合是') 那么base64编码是什么鬼?? 看源码解决吧 https://www.cnblogs.co ...

  10. 48 条高效率的 PHP 优化写法

    来源:歪麦博客 https://www.awaimai.com/1050.html 1 字符串 1.1 少用正则表达式 能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率 ...