计算机系统中使用的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

2016-12-31 23:59:59
2017-01-01 00:00:00

Sample Output

2

实验代码

#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<math.h>
typedef long long ll;
ll ans[5];
int Y[15]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; //nor
char c[3][3][33]; // 0 y-m-d  1 h-mi-s
int y[5],m[5],d[5],h[5],mi[5],s[5];
int data[3000][5];
bool runnian(int a)
{
    if((a%4==0&&a%100!=0)||a%400==0) return 1;
    else return 0;
}
void debug()
{
    printf("%d %d %d**\n",y[1],m[1],d[1]);
    printf("%d %d %d\n",h[1],mi[1],s[1]);
    printf("%d %d %d\n",y[2],m[2],d[2]);
    printf("%d %d %d\n",h[2],mi[2],s[2]);
}
void init()
{
    memset(ans,0,sizeof(ans));
    memset(y,0,sizeof(y));
    memset(m,0,sizeof(m));
    memset(d,0,sizeof(d));
    memset(h,0,sizeof(h));
    memset(mi,0,sizeof(mi));
    memset(s,0,sizeof(s));
    data[1972][1]=1;
    data[1972][2]=1;
    for(int i=1973; i<=1979; i++) data[i][2]=1;
    for(int i=1981; i<=1983; i++) data[i][1]=1;
    data[1985][1]=1;
    data[1987][2]=1;
    data[1989][2]=1;
    data[1990][2]=1;
    for(int i=1992; i<=1994; i++) data[i][1]=1;
    data[1995][2]=1;
    data[1997][1]=1;
    data[1998][2]=1;
    data[2005][2]=1;
    data[2008][2]=1;
    data[2012][1]=1;
    data[2015][1]=1;
    data[2016][2]=1;
}

ll ansy=365*24*3600;
ll calnian(int y)
{
    ll ans=0;
    for(int i=1970; i<=y; i++) //年
    {
        ans+=ansy;
        if(runnian(i)) ans+=24*60*60;
        if(data[i][1]) ans++;
        if(data[i][2]) ans++;
    }
    return ans;
}

ll calyue(int y,int m)
{
    ll ans=0;
    for(int j=1; j<=m; j++) //月
    {
        ans+=Y[j]*24*60*60;
        if(j==2&&runnian(y)) ans+=24*60*60; //闰年2月+一天
        if(j==6&&data[y][1]) ans++;//闰秒也要
        if(j==12&&data[y][2]) ans++;
    }
    return ans;
}

ll calday(int y,int m,int d)
{
    int f=0;
    ll ans=0;
    if(runnian(y)&&m==2) ans+=24*3600;
    ans+=d*24*3600;
    if(m==6&&data[y][1]) ans++;
    return ans;
}

int main()
{
    init();
    for(int i=1; i<=2; i++)
        scanf("%d-%d-%d %d:%d:%d",&y[i],&m[i],&d[i],&h[i],&mi[i],&s[i]);
        //debug();
    for(int x=1; x<=2; x++)
    {
        ans[x]+=calnian(y[x]-1);
        ans[x]+=calyue(y[x],m[x]-1);
        ans[x]+=calday(y[x],m[x],d[x]-1);
        ans[x]+=h[x]*3600;
        ans[x]+=mi[x]*60;
        ans[x]+=s[x];
    }
    printf("%lld\n",ans[2]-ans[1]);
    return 0;
}

  

设计思路

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

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

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

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. A1141. PAT Ranking of Institutions

    After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...

  2. vue2.0项目实战(1)基础入门

    最近公司的H5项目准备重构,部门老大说前端使用vue2.0来开发,所以就准备把整个项目的开发过程记录下来,一方面是为了记录开发过程中遇到的坑,另一方面也加强自己写作的能力. 什么是 Vue? 简要介绍 ...

  3. Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(1)

    1.开发环境配置 Windows7 64位旗舰版 python3.6 node.js mysql navicat pycharm webstorm或vscode 2.项目初始化 新版的pycharm很 ...

  4. win10开机自启动

    快捷方式复制到win+ R 编辑shell:startup enter后的文件夹中

  5. appium 切换native/ webview,findby,还有页面元素定位一直小于0的问题的解决

    之前一直有个bug没有解决. 今天,终于解决了. 疑问过程: app是混合应用,项目做了H5优化之后,以前的用例执行总会失败,体现在原来的一个元素点击无反馈 排查原因:1.项目做了H5优化,2.测试的 ...

  6. apache thrift分析

    thrift是一个用来实现跨语言的远程调用(RPC Remote Procedure Call)的软件框架.根据接口定义语言(IDL Interface definition lanuage) 并借助 ...

  7. java io系列25之 PrintWriter (字符打印输出流)

    更多内容请参考:java io系列01之 "目录" PrintWriter 介绍 PrintWriter 是字符类型的打印输出流,它继承于Writer.PrintStream 用于 ...

  8. 16、JDBC-DBUtils封装

    使用DBUtils写个通用CURD小工具 依赖配置 pom.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  9. H5新属性FileReader实现选择图片后立即显示在页面上

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Linux记录-JMX监控Tomcat上传到falcon

    1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...