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

【题意】



中文题

【题解】



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

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

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

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

把有闰秒的年月日;

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

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

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

在的话,ans++;



【Number Of WA】



8



【完整代码】

#include <cstdio>
#include <iostream>
#include <algorithm>
#define LL long long using namespace std; const int MAXN = 5000+100; struct abc
{
int year,month,day,hour,minute,second;
}; int n;
int a[MAXN];
abc ks,js,temp,tks,tjs;
LL rest;
int day[13]; bool rn(int x)
{
if (!(x%4))
{
if (x%100)
return true;
else
{
if (x%400)
return false;
else
return true;
}
}
else
return false;
} void change(abc &ks)
{
if (ks.second>59)
{
ks.second=0;
ks.minute++;
if (ks.minute>59)
{
ks.minute=0;
ks.hour++;
if (ks.hour == 24)
{
ks.hour=0;
ks.day++;
if (ks.day > day[ks.month])
{
ks.day = 1;
ks.month++;
if (ks.month > 12)
{
ks.year++;
ks.month = 1;
}
}
}
}
}
} int bijiao(abc a,abc b)
{
if (a.year != b.year)
return a.year<b.year;
if (a.month!=b.month)
return a.month<b.month;
if (a.day !=b.day)
return a.day < b.day;
if (a.hour!=b.hour)
return a.hour < b.hour;
if (a.minute!=b.minute)
return a.minute < b.minute;
if (a.second!=b.second)
return a.second<b.second;
return -1;
} bool ok()
{
int ju1 = bijiao(tks,temp),ju2 = bijiao(temp,tjs);
if (ju1==1 && ju2==1)
return true;
return false;
} void pd(int x)
{
temp.year = x;
if (ok()) rest++;
} int main()
{
//freopen("D:\\rush.txt","r",stdin);
scanf("%d-%d-%d %d:%d:%d",&ks.year,&ks.month,&ks.day,&ks.hour,&ks.minute,&ks.second);
scanf("%d-%d-%d %d:%d:%d",&js.year,&js.month,&js.day,&js.hour,&js.minute,&js.second);
tks = ks,tjs = js;
rest = 0;
for (int i = ks.year+1;i <= js.year-1;i++)
if (rn(i))
rest+=31622400;
else
rest+=31536000;
day[1] = day[3] = day[5] = day[7] = day[8] = day[10] = day[12] = 31;
day[4] = day[6] = day[9] = day[11] = 30;
if (ks.year<js.year)
{
int goal = ks.year+1;
if (rn(ks.year))
day[2] = 29;
else
day[2] = 28;
while (ks.year<goal)
{
ks.second++;
rest++;
change(ks);
}
ks.year = js.year;
if (rn(ks.year))
day[2] = 29;
else
day[2] = 28;
while (ks.month < js.month || ks.day < js.day || ks.hour < js.hour || ks.minute < js.minute)
{
rest++;
ks.second++;
change(ks);
}
rest+=js.second-ks.second;
}
else
if (ks.year == js.year)
{
if (rn(ks.year))
day[2] = 29;
else
day[2] = 28;
while (ks.month < js.month || ks.day < js.day || ks.hour < js.hour || ks.minute < js.minute)
{
rest++;
ks.second++;
change(ks);
}
rest+=js.second-ks.second;
}
temp.month = 6,temp.day = 30,temp.hour = 23,temp.minute = 59,temp.second = 60; //6/30 23:59:60
pd(1972);
for (int i = 1981;i<=1983;i++) pd(i);
pd(1985);
for (int i = 1992;i<=1994;i++) pd(i);
pd(1997);
pd(2012);
pd(2015);
temp.month = 12,temp.day = 31; for (int i = 1972;i<=1979;i++) pd(i);
pd(1987);
for (int i = 1989;i <= 1990;i++) pd(i);
pd(1995);
pd(1998);
pd(2005);
pd(2008);
pd(2016); cout << rest << endl;
return 0;
}

【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. 372 在O(1)时间复杂度删除链表节点

    原题网址:http://www.lintcode.com/zh-cn/problem/delete-node-in-the-middle-of-singly-linked-list/ 给定一个单链表中 ...

  2. object_detection/protos/*.proto: No such file or directory

    1 背景 使用TensorFlow Object Detection API的时,在object_detection/protos/中,可以看到一些proto 文件,需要使用protoc程序将这些pr ...

  3. 计算图像数据集的RGB均值

    最近在跑代码的时候,需要用到RGB三个通道上的均值,如下图所示: 写了一个程序,如下: import os import cv2 import random import numpy as np #数 ...

  4. jquery 表单验证插件

    其他: <form action=""> First name: <input type="text" name="FirstNam ...

  5. 关于set_multicycle_path的最后总结

    (1) –start/-end决定移动的距离以start_clock/end_clock为单元: (2) 对于-setup选项,移动距离是在默认关系的基础上移动(数值-1): (3) 默认往后, se ...

  6. day09 samba、nginx服务配置

    samba 1.环境准备 [root@localhost ~]# iptables -F #清除防火墙配置 [root@localhost ~]# systemctl stop firewalld # ...

  7. thinkphp 参数绑定

    参数绑定是指绑定一个参数到预处理的SQL语句中的对应命名占位符或问号占位符指定的变量,并且可以提高SQL处理的效率,需要数据库驱动类的支持,目前只有PDO和Sqlsrv驱动支持参数绑定功能. 富瑞华大 ...

  8. 2-sat——hdu3062

    对于怎么建边还是不太清楚 选了a,那么b c不选,所以连边 选了b或c,那么a必定不选 /* 每个点拆成i*2,i*2+1 队长选,那么队友不选 队长不选,那么队友必定要选 */ #include&l ...

  9. Ionic3 demo TallyBook 实例2

    1.添加插件 2.相关页面 消费页面: <ion-header> <ion-navbar> <ion-title> 消费记录 </ion-title> ...

  10. 利用eclipse通过mybatis进行查询汉字字符时候无法显示结果,但是直接通过cmd窗口可以显示的解决方法

    将数据库配置文件中的url写成如下的形式就可以成功查询: url = "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&quo ...