【题目链接】: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. c# 中xml序列化时相同节点存入不同类型值

    先上需要序列话的类定义: [System.Xml.Serialization.XmlIncludeAttribute(typeof(DescriptionType))] [System.CodeDom ...

  2. 深刻理解Vue中的组件

    转载:https://segmentfault.com/a/1190000010527064 --20更新: Vue2.6已经更新了关于内容插槽和作用域插槽的API和用法,为了不误导大家,我把插槽的内 ...

  3. PAT甲级——A1111 Online Map【30】

    Input our current position and a destination, an online map can recommend several paths. Now your jo ...

  4. python安装requests第三方模块

    2018-08-28 22:04:51 1 .下载到桌面后解压,放到python的目录下 ------------------------------------------------------- ...

  5. SWT图形用户界面之配置

    1.在eclipse的plugins目录下找到org.eclipse.swt.win32.win32.x86_64_3.111.0.v20190605-1801.jar文件 其中3.111.0是ecl ...

  6. 使用Python实现不同目录下文件的拷贝

    目标:要实现将一台计算机的共享文件夹中的文件备份到另一台计算机,如果存在同名的文件只要文件的大小和最后修改时间一致,则不拷贝该文件 python版本:Python3.7.1 python脚本: fro ...

  7. <Django>第一篇:入门的例子

    1.MVT框架 Model(模型):数据库交互相关.在这部分一般需要进行三个操作: (1)面向数据库:模型对象.列表 (2)定义模型类:指定属性及类型,确定表结构(设计表),需要迁移(生成表) (3) ...

  8. (转)nginx配置location总结及rewrite规则写法

    注: rewrite 只能对域名后边的除去传递的参数外的字符串起作用,并且要写全域名后面的部分,如: http://i.com:9090/php/midou/admin.php/index/login ...

  9. JS控制语句 编程练习 学生数据,分别是姓名、性别、年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦。

    编程练习 在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名.性别.年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦. 学生信息如下 ...

  10. GROUP方法也是连贯操作方法之一

    GROUP方法也是连贯操作方法之一,通常用于结合合计函数,根据一个或多个列对结果集进行分组 . group方法只有一个参数,并且只能使用字符串. 例如,我们都查询结果按照用户id进行分组统计: $th ...