描述
计算机系统中使用的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次闰秒,具体添加的时间见下表:

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

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

输出
两个时间间隔多少秒。

样例输入
2016-12-31 23:59:59
2017-01-01 00:00:00
样例输出
2

思路:

简单模拟,2019了,希望自己更自律一点,更努力一点!

#include <iostream>
#include <climits>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;static int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
static int leap_month[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
static long year_second = 31536000;long count_sec(vector<int> Jun_add, vector<int> Dec_add, int year,int mon,int day,int hour,int min,int sec){long result = 0;int * m;bool leap_Jun = false;if((year%400)==0 || (year%4==0 && year%100!=0))m = leap_month;elsem = month;if(Jun_add[lower_bound(Jun_add.begin(),Jun_add.end(),year)-Jun_add.begin()]==year)leap_Jun = true;for (int i = 1; i < mon; ++i) {result += 86400 * (long)(*(m+(i-1)));if(i == 6 && leap_Jun)++result;}result += 86400*(day-1) + 3600*hour + 60*min + sec;return result+1;
}void solve() {vector<int> Jun_add(12,0);vector<int> Dec_add(17,0);int Jun_array[12]  = {1972,1981,1982,1983,1985,1992,1993,1994,1997,2012,2015,3000};int Dec_array[17] = {1972,1973,1974,1975,1976,1977,1978,1979,1987,1989,1990,1995,1998,2005,2008,2016,3000};for(int i = 0; i < 12; ++i){Jun_add[i] = Jun_array[i];}for(int i = 0; i < 17; ++i){Dec_add[i] = Dec_array[i];}string year1_string, time1_string, year2_string, time2_string;cin >> year1_string >> time1_string >> year2_string >> time2_string;long long result = 0;int year1 = stoi(year1_string.substr(0,4));int year2 = stoi(year2_string.substr(0,4));auto Jun_index = lower_bound(Jun_add.begin(),Jun_add.end(),year1)-Jun_add.begin(),Dec_index = lower_bound(Dec_add.begin(),Dec_add.end(),year1)-Dec_add.begin();for (int i = year1;i < year2; ++i) {result += year_second;if((i%400)==0 || (i%4==0 && i%100!=0)){result += 86400;}if (i == Jun_add[Jun_index]) {++result;++Jun_index;}if (i == Dec_add[Dec_index]) {++result;++Dec_index;}}int month1 = stoi(year1_string.substr(5,2));int month2 = stoi(year2_string.substr(5,2));int day1 = stoi(year1_string.substr(8,2));int day2 = stoi(year2_string.substr(8,2));int hour1 = stoi(time1_string.substr(0,2));int hour2 = stoi(time2_string.substr(0,2));int min1 = stoi(time1_string.substr(3,2));int min2 = stoi(time2_string.substr(3,2));int sec1 = stoi(time1_string.substr(6,2));int sec2 = stoi(time2_string.substr(6,2));result += count_sec(Jun_add,Dec_add,year2,month2,day2,hour2,min2,sec2);result -= count_sec(Jun_add,Dec_add,year1,month1,day1,hour1,min1,sec1);cout<<result<<endl;
}int main() {solve();return 0;}

每日一题之 hiho235周 润秒(简单模拟)相关推荐

  1. 每日一题之hiho213周 Boarding Passes

    描述 Long long ago you took a crazy trip around the world. You can not remember which cities did you s ...

  2. 每日一题之 hiho232周 拆字游戏

    描述 小Kui喜欢把别人的名字拆开来,比如"螺"就可以拆成"虫田糸",小Kui的语文学的不是很好,于是她决定使用编程的方式来解决这个问题. 给出一个01矩阵,1 ...

  3. 每日一题之hiho231周 小Ho的强迫症 (数学题)

    描述 小Ho在一条笔直的街道上散步.街道上铺着长度为L的石板,所以每隔L距离就有一条石板连接的缝隙,如下图所示. 小Ho在散步的时候有奇怪的强迫症,他不希望脚踩在石板的缝隙上.(如果小Ho一只脚的脚尖 ...

  4. 4.11每日一题之亲戚(洛谷c++)|简单并查集

  5. acwing——每日一题——总结

    acwing--每日一题--总结 第一周 1.笨拙的手指(考查点:进制转换) 2.干草堆(考查点:差分+前缀和) 3.奶牛选美(bfs模板+floodfill算法) 4.拖拉机(bfs+双端队列=迪杰 ...

  6. 【每日一题】美国节日(基姆拉尔森公式、蔡勒公式)

    [每日一题]美国节日(基姆拉尔森公式.蔡勒公式)   相关文章:   [每日一题]一周中的第几天(基姆拉尔森公式的应用)   [每日一题]美国节日(基姆拉尔森公式.蔡勒公式)   [每日一题]计算日期 ...

  7. CCF CSP 201609-2 火车购票(C++语言100分)[简单模拟题]

    1. 问题链接:CCF 201609-2 火车购票 试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的 ...

  8. 运维面试题(每日一题)

    每日一题 第一周 1.添加路由 2.如何防止Linux命令行或脚本里MySQL登录密码泄露? 3.将前端运行的服务或脚本,如何可以放置到后端进行执行 4.linux网络配置中如何给一块网卡添加多个IP ...

  9. 每日一题:讲一讲你理解的微服务架构?

    点击上方 ,选择 设为星标 优质文章,及时送达 原文来自 GitHub 开源社区 Doocs,欢迎 Star 此项目,如果你有独到的见解,同样可以参与贡献此项目. 面试题 讲一讲你理解的微服务架构? ...

最新文章

  1. crosstab交叉表_透视图和交叉表
  2. 医疗术语自动编码论文总结 (Automated Coding)
  3. 【Java】详解菜单组件
  4. re匹配正则字符串中的起始和结束元字符的使用方法
  5. java c 转换_Java怎么转换c语言?
  6. django获取字段列表(values/values_list/flat)
  7. java编程思想之多态理解
  8. Android 原生工程接入mPaas框架
  9. 如何把视频kux格式转换mp4?手机怎么观看kux视频
  10. 【解决】maven install出现fatal error compiling
  11. meta标签http-equiv属性的作用
  12. XXXXXXXXXXX
  13. 负数在计算机中的表示和存储
  14. Appium APP UI自动化测试框架介绍
  15. C# 将PPT转为OFD、DPT、DPS、ODP、POTX、UOP
  16. 100块钱买100只鸡的故事
  17. Comprehensive Analysis of Time Series Forecasting Using Neural Networks
  18. CISCO 640-875 认证题库 更新
  19. matlab 河道水面线计算,河道水面线计算的可视化实现方法及软件
  20. 直升机空气动力学基础---002 桨叶的主要参数

热门文章

  1. 单位指定美年大健康入职体检不合格流程有哪些?
  2. gitlab CI/CD自动化部署
  3. 淘宝联盟开发系列:阿里妈妈淘宝客申请步骤
  4. 音视频编解码:MP4封装格式笔记
  5. 如何利用博客评论做外链而不被删除
  6. 星际飞船助推器在地面测试中意外发生爆炸 发射台燃起大火
  7. 百胜erp软件下载 php,百胜erp软件迎来电商软件3.0时代
  8. mysql索引作用的简单理解
  9. 如何用Python对股票数据进行LSTM神经网络和XGboost机器学习预测分析(附源码和详细步骤),学会的小伙伴们说不定就成为炒股专家一夜暴富了
  10. 蒂法html5游戏,完全攻略蒂法