【题目链接】:http://hihocoder.com/problemset/problem/1477

【题意】



中文题

【题解】



首先,一年一年地加,把开始的年份和结束的年份之间的年根据是否为闰年;

加上365天的秒和366天的秒;

然后把开始的那一年的剩余天数加完;

再把结束的那一年的1月1号开始一直加到结束的年的月日;

把有闰秒的年月日;

判断一下,在不在两个日期之间;

(严格在两个日期之间,不能相等);

我的程序,算的时候,右端点严格会被算到;

在的话,ans++;



【Number Of WA】



8



【完整代码】

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <algorithm>
  4. #define LL long long
  5. using namespace std;
  6. const int MAXN = 5000+100;
  7. struct abc
  8. {
  9. int year,month,day,hour,minute,second;
  10. };
  11. int n;
  12. int a[MAXN];
  13. abc ks,js,temp,tks,tjs;
  14. LL rest;
  15. int day[13];
  16. bool rn(int x)
  17. {
  18. if (!(x%4))
  19. {
  20. if (x%100)
  21. return true;
  22. else
  23. {
  24. if (x%400)
  25. return false;
  26. else
  27. return true;
  28. }
  29. }
  30. else
  31. return false;
  32. }
  33. void change(abc &ks)
  34. {
  35. if (ks.second>59)
  36. {
  37. ks.second=0;
  38. ks.minute++;
  39. if (ks.minute>59)
  40. {
  41. ks.minute=0;
  42. ks.hour++;
  43. if (ks.hour == 24)
  44. {
  45. ks.hour=0;
  46. ks.day++;
  47. if (ks.day > day[ks.month])
  48. {
  49. ks.day = 1;
  50. ks.month++;
  51. if (ks.month > 12)
  52. {
  53. ks.year++;
  54. ks.month = 1;
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }
  61. int bijiao(abc a,abc b)
  62. {
  63. if (a.year != b.year)
  64. return a.year<b.year;
  65. if (a.month!=b.month)
  66. return a.month<b.month;
  67. if (a.day !=b.day)
  68. return a.day < b.day;
  69. if (a.hour!=b.hour)
  70. return a.hour < b.hour;
  71. if (a.minute!=b.minute)
  72. return a.minute < b.minute;
  73. if (a.second!=b.second)
  74. return a.second<b.second;
  75. return -1;
  76. }
  77. bool ok()
  78. {
  79. int ju1 = bijiao(tks,temp),ju2 = bijiao(temp,tjs);
  80. if (ju1==1 && ju2==1)
  81. return true;
  82. return false;
  83. }
  84. void pd(int x)
  85. {
  86. temp.year = x;
  87. if (ok()) rest++;
  88. }
  89. int main()
  90. {
  91. //freopen("D:\\rush.txt","r",stdin);
  92. scanf("%d-%d-%d %d:%d:%d",&ks.year,&ks.month,&ks.day,&ks.hour,&ks.minute,&ks.second);
  93. scanf("%d-%d-%d %d:%d:%d",&js.year,&js.month,&js.day,&js.hour,&js.minute,&js.second);
  94. tks = ks,tjs = js;
  95. rest = 0;
  96. for (int i = ks.year+1;i <= js.year-1;i++)
  97. if (rn(i))
  98. rest+=31622400;
  99. else
  100. rest+=31536000;
  101. day[1] = day[3] = day[5] = day[7] = day[8] = day[10] = day[12] = 31;
  102. day[4] = day[6] = day[9] = day[11] = 30;
  103. if (ks.year<js.year)
  104. {
  105. int goal = ks.year+1;
  106. if (rn(ks.year))
  107. day[2] = 29;
  108. else
  109. day[2] = 28;
  110. while (ks.year<goal)
  111. {
  112. ks.second++;
  113. rest++;
  114. change(ks);
  115. }
  116. ks.year = js.year;
  117. if (rn(ks.year))
  118. day[2] = 29;
  119. else
  120. day[2] = 28;
  121. while (ks.month < js.month || ks.day < js.day || ks.hour < js.hour || ks.minute < js.minute)
  122. {
  123. rest++;
  124. ks.second++;
  125. change(ks);
  126. }
  127. rest+=js.second-ks.second;
  128. }
  129. else
  130. if (ks.year == js.year)
  131. {
  132. if (rn(ks.year))
  133. day[2] = 29;
  134. else
  135. day[2] = 28;
  136. while (ks.month < js.month || ks.day < js.day || ks.hour < js.hour || ks.minute < js.minute)
  137. {
  138. rest++;
  139. ks.second++;
  140. change(ks);
  141. }
  142. rest+=js.second-ks.second;
  143. }
  144. temp.month = 6,temp.day = 30,temp.hour = 23,temp.minute = 59,temp.second = 60;
  145. //6/30 23:59:60
  146. pd(1972);
  147. for (int i = 1981;i<=1983;i++) pd(i);
  148. pd(1985);
  149. for (int i = 1992;i<=1994;i++) pd(i);
  150. pd(1997);
  151. pd(2012);
  152. pd(2015);
  153. temp.month = 12,temp.day = 31;
  154. for (int i = 1972;i<=1979;i++) pd(i);
  155. pd(1987);
  156. for (int i = 1989;i <= 1990;i++) pd(i);
  157. pd(1995);
  158. pd(1998);
  159. pd(2005);
  160. pd(2008);
  161. pd(2016);
  162. cout << rest << endl;
  163. return 0;
  164. }

【hihocoder 1477】闰秒的更多相关文章

  1. 【hihocoder编程练习赛9】闰秒

    题目链接 #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h&g ...

  2. hihocoder1477 闰秒

    地址:http://hihocoder.com/problemset/problem/1477 题目: 闰秒 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 计算机系统中 ...

  3. 闰秒导致MySQL服务器的CPU sys过高

    今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...

  4. hihocoder -1121-二分图的判定

    hihocoder -1121-二分图的判定 1121 : 二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Net ...

  5. Hihocoder 太阁最新面经算法竞赛18

    Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus ...

  6. hihoCoder太阁最新面经算法竞赛15

    hihoCoder太阁最新面经算法竞赛15 Link: http://hihocoder.com/contest/hihointerview24 题目1 : Boarding Passes 时间限制: ...

  7. 【hihoCoder 1454】【hiho挑战赛25】【坑】Rikka with Tree II

    http://hihocoder.com/problemset/problem/1454 调了好长时间,谜之WA... 等我以后学好dp再来看为什么吧,先弃坑(╯‵□′)╯︵┻━┻ #include& ...

  8. 【hihocoder#1413】Rikka with String 后缀自动机 + 差分

    搞了一上午+接近一下午这个题,然后被屠了个稀烂,默默仰慕一晚上学会SAM的以及半天4道SAM的hxy大爷. 题目链接:http://hihocoder.com/problemset/problem/1 ...

  9. 【hihoCoder】1148:2月29日

    问题:http://hihocoder.com/problemset/problem/1148 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 思路: 1. 将问题转换成求两个日 ...

随机推荐

  1. JavaScript - window对象相关

    1 . window对象常用方法 : 写法 : window.方法() 注意 : window可以省略不写 alert(), confirm(), prompt()是JavaScript提供和用户交互 ...

  2. 初识Qgis

    折腾了一天,qgis终于能在跟了自己8年的本本上顺利打开了,官网先后下载了3.8和3.4版本的都出现了同样的问题,"could not load qgis_app.dll",goo ...

  3. SpringBoot使用拦截器/ Servlet/ Filter

    一.SpringBoot中使用拦截器 使用SpringMVC的拦截器,需要定义好拦截器,然后通过配置文件文件,对其进行注册 而在SpringBoot项目中,之前在配置文件中配置的内容,现在体现在一个类 ...

  4. python封装email模块

    一.代码 from email.mime.text import MIMEText from email.header import Header from email.utils import pa ...

  5. JavaConfig

    Java Config是Spring的一个子项目,它旨在通过Java类的方式提供Bean的定义信息,是Spring4.0的核心功能   普通的POJO只要标注@Configuration注解,就可以为 ...

  6. 浅谈简单实现file控件的图片预览,裁剪和上传。

    1.图片预览之FileReader对象    FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据 ...

  7. 20175323《Java程序设计》第四周学习总结

    教材学习内容总结 我用幕布记录学习过程和思路,下面是我这章的知识框架总结https://mubu.com/doc/ffMhY6FVc0 教材学习中的问题和解决过程 问题1:教材121页的例六Examp ...

  8. mybatis-plus分页查询

    在springboot中整合mybatis-plus 按照官方文档进行的配置:快速开始|mybatis-plus 引入依赖: <!-- 引入mybatisPlus --> <depe ...

  9. 11_springmvc之RESTful支持

    一.理解RESTful RESTful架构,就是一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. RESTful(即Representational Sta ...

  10. Linux使用crontab定时执行Python脚本清理日志

    Linux中,周期执行的任务一般由crond这个守护进程来处理.cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.crond的配置文件称为"crontab", ...