计算机系统中使用的UTC时间基于原子钟,这种计时方式同“地球自转一周是24小时”的计时方式有微小的偏差。为了弥补这种偏差,我们偶尔需要增加一个“闰秒”。

最近的一次闰秒增加发生在UTC时间2016年的最后一天。我们在2016年12月31日23时59分59秒和2017年1月1日0时0分0秒之间增加了这样一秒:2016年12月31日23时59分60秒,记作2016-12-31 23:59:60。

目前一共增加了27次闰秒,具体添加的时间见下表:

给出两个时间,请你判断在考虑闰秒的情况下,这两个时间间隔多少秒。

Input

两个时间各占一行,格式是yyyy-MM-dd HH:mm:ss,范围在1970-01-01 00:00:00至2017-03-12 23:59:59之间。保证第一个时间不晚于第二个时间。

Output

两个时间间隔多少秒。

Sample Input

  1. 2016-12-31 23:59:59
  2. 2017-01-01 00:00:00

Sample Output

2

实验代码

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdbool.h>
  4. #include<math.h>
  5. typedef long long ll;
  6. ll ans[5];
  7. int Y[15]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; //nor
  8. char c[3][3][33]; // 0 y-m-d 1 h-mi-s
  9. int y[5],m[5],d[5],h[5],mi[5],s[5];
  10. int data[3000][5];
  11. bool runnian(int a)
  12. {
  13. if((a%4==0&&a%100!=0)||a%400==0) return 1;
  14. else return 0;
  15. }
  16. void debug()
  17. {
  18. printf("%d %d %d**\n",y[1],m[1],d[1]);
  19. printf("%d %d %d\n",h[1],mi[1],s[1]);
  20. printf("%d %d %d\n",y[2],m[2],d[2]);
  21. printf("%d %d %d\n",h[2],mi[2],s[2]);
  22. }
  23. void init()
  24. {
  25. memset(ans,0,sizeof(ans));
  26. memset(y,0,sizeof(y));
  27. memset(m,0,sizeof(m));
  28. memset(d,0,sizeof(d));
  29. memset(h,0,sizeof(h));
  30. memset(mi,0,sizeof(mi));
  31. memset(s,0,sizeof(s));
  32. data[1972][1]=1;
  33. data[1972][2]=1;
  34. for(int i=1973; i<=1979; i++) data[i][2]=1;
  35. for(int i=1981; i<=1983; i++) data[i][1]=1;
  36. data[1985][1]=1;
  37. data[1987][2]=1;
  38. data[1989][2]=1;
  39. data[1990][2]=1;
  40. for(int i=1992; i<=1994; i++) data[i][1]=1;
  41. data[1995][2]=1;
  42. data[1997][1]=1;
  43. data[1998][2]=1;
  44. data[2005][2]=1;
  45. data[2008][2]=1;
  46. data[2012][1]=1;
  47. data[2015][1]=1;
  48. data[2016][2]=1;
  49. }
  50.  
  51. ll ansy=365*24*3600;
  52. ll calnian(int y)
  53. {
  54. ll ans=0;
  55. for(int i=1970; i<=y; i++) //年
  56. {
  57. ans+=ansy;
  58. if(runnian(i)) ans+=24*60*60;
  59. if(data[i][1]) ans++;
  60. if(data[i][2]) ans++;
  61. }
  62. return ans;
  63. }
  64.  
  65. ll calyue(int y,int m)
  66. {
  67. ll ans=0;
  68. for(int j=1; j<=m; j++) //月
  69. {
  70. ans+=Y[j]*24*60*60;
  71. if(j==2&&runnian(y)) ans+=24*60*60; //闰年2月+一天
  72. if(j==6&&data[y][1]) ans++;//闰秒也要
  73. if(j==12&&data[y][2]) ans++;
  74. }
  75. return ans;
  76. }
  77.  
  78. ll calday(int y,int m,int d)
  79. {
  80. int f=0;
  81. ll ans=0;
  82. if(runnian(y)&&m==2) ans+=24*3600;
  83. ans+=d*24*3600;
  84. if(m==6&&data[y][1]) ans++;
  85. return ans;
  86. }
  87.  
  88. int main()
  89. {
  90. init();
  91. for(int i=1; i<=2; i++)
  92. scanf("%d-%d-%d %d:%d:%d",&y[i],&m[i],&d[i],&h[i],&mi[i],&s[i]);
  93. //debug();
  94. for(int x=1; x<=2; x++)
  95. {
  96. ans[x]+=calnian(y[x]-1);
  97. ans[x]+=calyue(y[x],m[x]-1);
  98. ans[x]+=calday(y[x],m[x],d[x]-1);
  99. ans[x]+=h[x]*3600;
  100. ans[x]+=mi[x]*60;
  101. ans[x]+=s[x];
  102. }
  103. printf("%lld\n",ans[2]-ans[1]);
  104. return 0;
  105. }

  

设计思路

此代码我经过借鉴,自己乱改了一下,没想到过了(原本的代码

这道题我搞了半天发现还是不会做,于是就去找度娘,找了好多种代码,没一个能过。后来我就随便拿一个大佬代码,自己乱改一波,居然过了。哈哈哈~~

看到这个代码,发现好多知识点都不知道,我觉得我还是先去看书吧,丰富一下知识点。这题目~~唉,跟其他大佬的一波风算了...

B - 签到题的更多相关文章

  1. A 洛谷 P3601 签到题 [欧拉函数 质因子分解]

    题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...

  2. fjwc2019 D3T1 签到题 (贪心)

    #184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位 ...

  3. CTF-练习平台-WEB之 签到题

    一.签到题 根据提示直接加群在群公告里就能找到~

  4. 洛谷P3601签到题(欧拉函数)

    题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...

  5. 【洛谷九月月赛T1】签到题(bsgs)(快速乘)

    说好的签到题呢qwq....怎么我签到题都不会啊qwq 之后看了bsgs才发现貌似不是那么那么难fake!!什么东西... 先贴上部分分做法(也就是枚举1的个数,然后每一步都进行取模(这和最后取模结果 ...

  6. WEB新手之签到题

    写一写web新手赛的题. 这是签到题,开始时需要耐心等待页面中字母全部出现. 字母全部出现后,会跳转到另一个界面,如上图所示.F12没什么特别的地方,这题应该有点难度. 按往常一样,先抓包. 按英文提 ...

  7. EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】

    传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...

  8. HLJU 1221: 高考签到题 (三分求极值)

    1221: 高考签到题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 9  Solved: 4 [Submit][id=1221">St ...

  9. Different Integers 牛客多校第一场只会签到题

    Given a sequence of integers a1, a2, ..., an and q pairs of integers (l1, r1), (l2, r2), ..., (lq, r ...

  10. P3794 签到题IV

    题目 P3794 签到题IV 来切道水题放松一下吧 做法 或是单调不下降的,\(gcd\)是单调不上升的 \(a_i≤5×10^5\)分成权值不同的块数应该很小,所以随便乱搞就出来了 My compl ...

随机推荐

  1. Python使用import导入相对路径的其他py文件

    假如有如下的目录结构 . ├── setup.py ├── main.py ├── mod/ │   └── mod.py └── sub/ └── sub.py 情况1:setup.py导入main ...

  2. 收集JavaScript中常用的方法函数

    本文中,收集了一些比较常用的Javascript函数,希望对学习JS的朋友们有所帮助. 1. 字符串长度截取 function cutstr(str, len) { var temp, icount ...

  3. Proxy代理模式

    https://www.cnblogs.com/vincentzh/p/5988145.html https://www.cnblogs.com/wrbxdj/p/5267370.html(不错)

  4. 如何自学 Android 的?

    http://android.jobbole.com/83380/ 1. Java知识储备 本知识点不做重点讲解:对于有基础的同学推荐看<Java编程思想>,巩固基础,查漏补全,了解并熟悉 ...

  5. errorC2504未定义基类

    这一般是在有继承时,头文件引用错误 例如: A.cpp文件                                                        A .h文件 #include ...

  6. python 中r 和 \r

    r'xxx' 转义 如果在前面加r字符,则表示让这个字符串里面的内容失去转义的意义 1 s = r'\n这只是\n' # 字符串中的"\n"只是字符,没有换行的意义了. 2 pri ...

  7. HTML学习笔记Day3

    一.CSS样式 1.每个css样式都必须由两部分组成:选择符(Selector)+声明(Deleration) 注:声明又包括属性(Properyt)和属性值(value) 2.css属性:属性是指定 ...

  8. (map string)Crazy Search hdu1381

    Crazy Search Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  9. RS485 / RS422

    RS422可以变为RS485:A和Y短路(然后接T/R+),B和Z短路(然后接T/R-) RS485是半双工,只有两根线通信线,要么接收状态,要么发送状态 RE为低电平,作为接收器 DE为高电平,作为 ...

  10. win命令大全

    Windows系统:开始--运行--命令大全 Nslookup-------IP地址侦测器                       explorer-------打开资源管理器 logoff--- ...