【NOIP2016普及组】 second 枚举 date
来源:互联网 发布:阿里巴巴淘宝城四期 编辑:程序博客网 时间:2024/06/05 07:51
由于各种各样的缘故,题目无法放上来,看看洛谷里的原题目吧……
NOIP2016普及组-回文日期-洛谷
这道题乍一看就觉得很简单,非常容易就能想到用枚举即可,但是还是有几丝顾虑——一天一天枚举会不会爆?我也如此想着,所以想到了一个机(zuo)智(si)的方法——一年一年加(一年最多只会有一个回文),判断合法性即可。如:
什么某年的回文月份与日份不匹配(13200231),月份日份明显超标或不达标(20000002,53100135)(闰年什么的怎么可能不考虑……)
然后我突然发现一个问题:比如说这种数据——2011 01 01~2011 11 01(为方便你们打上空格),这样只有一年,而这年的回文是2011 11 02,虽然合法,但不在区间内,也不能算。所以就多花一点时间判断一下吧!我这么想……
但是现实打击了我,我只判断了结束年是否合法,忘记了判断开始年,所以——
2010 01 01~2011 11 01
只有一个回文——2010 01 02,而我却会有两个——2010 01 02和2011 11 02
哭晕在厕所……
不过呢——由于民间数据太水,我的程序还是AC了,不过官方数据应该会有坑我的那种……只能自求多福了……
就知道你们会要代码:
#include<cstdio>int s1,s2;int day[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};int sy,sm,sd,ey,em,ed,sum;int f(int a){return a%10*10+a/10;}int r(){if(sm!=2)return 0;elsereturn (sy%4==0&&sy%100)||sy%400==0;}int main(){scanf("%d%d",&s1,&s2);sy=s1/10000;sm=s1/100%100;sd=s1%100;ey=s2/10000;em=s2/100%100;ed=s2%100;for(;sy<ey||(sy==ey&&sm<em)||(sy==ey&&sm==em&&sd<=ed);sd++){if(sd>r()+day[sm]){sd=1;sm++;}if(sm>12){sm=1;sy++;}if(f(sd)*100+f(sm)==sy){sum++;}}printf("%d",sum);}
1 0
- 【NOIP2016普及组】 second 枚举 date
- NOIP2016普及组 总结
- NOIP2016 普及组总结
- NOIP2016普及组总结
- Noip2016普及组总结
- noip2016普及组 题解
- noip2016普及组复赛
- noip2016普及组初赛答案
- noip2016普及组复赛总结
- NOIP2016之普及组总结
- 【原创】【NOIP2016普及组】海港
- 【NOIP2016普及组】关于这四道水题
- 【NOIP2016】普及组魔法阵
- noip2016普及组复赛题解
- NOIP2016普及组正式赛
- NOIP2016普及组NO.1
- NOIP2016普及组NO.1
- noip2016普及组题解报告
- 简单工厂模式
- RxJava 学习使用心得
- Sku算法--商城(品种,规格,参数等选择)
- MySQL命令insert into:向表中插入数据(记录)
- java SpringMvc 实现文件在线预览(openoffice+swftools+flexpaper)
- 【NOIP2016普及组】 second 枚举 date
- 2 slice2java 命令选项详解
- 左侧固定宽度,右侧自适应宽度铺满剩余屏幕
- C++:堆与栈区别
- LevelDB详解
- 文件上传
- java之JDK学习
- 实验三 基于数据包捕获的数据报结构分析
- curl详解常用示例