每日一题之 hiho235周 润秒(简单模拟)
描述
计算机系统中使用的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周 润秒(简单模拟)相关推荐
- 每日一题之hiho213周 Boarding Passes
描述 Long long ago you took a crazy trip around the world. You can not remember which cities did you s ...
- 每日一题之 hiho232周 拆字游戏
描述 小Kui喜欢把别人的名字拆开来,比如"螺"就可以拆成"虫田糸",小Kui的语文学的不是很好,于是她决定使用编程的方式来解决这个问题. 给出一个01矩阵,1 ...
- 每日一题之hiho231周 小Ho的强迫症 (数学题)
描述 小Ho在一条笔直的街道上散步.街道上铺着长度为L的石板,所以每隔L距离就有一条石板连接的缝隙,如下图所示. 小Ho在散步的时候有奇怪的强迫症,他不希望脚踩在石板的缝隙上.(如果小Ho一只脚的脚尖 ...
- 4.11每日一题之亲戚(洛谷c++)|简单并查集
- acwing——每日一题——总结
acwing--每日一题--总结 第一周 1.笨拙的手指(考查点:进制转换) 2.干草堆(考查点:差分+前缀和) 3.奶牛选美(bfs模板+floodfill算法) 4.拖拉机(bfs+双端队列=迪杰 ...
- 【每日一题】美国节日(基姆拉尔森公式、蔡勒公式)
[每日一题]美国节日(基姆拉尔森公式.蔡勒公式) 相关文章: [每日一题]一周中的第几天(基姆拉尔森公式的应用) [每日一题]美国节日(基姆拉尔森公式.蔡勒公式) [每日一题]计算日期 ...
- CCF CSP 201609-2 火车购票(C++语言100分)[简单模拟题]
1. 问题链接:CCF 201609-2 火车购票 试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的 ...
- 运维面试题(每日一题)
每日一题 第一周 1.添加路由 2.如何防止Linux命令行或脚本里MySQL登录密码泄露? 3.将前端运行的服务或脚本,如何可以放置到后端进行执行 4.linux网络配置中如何给一块网卡添加多个IP ...
- 每日一题:讲一讲你理解的微服务架构?
点击上方 ,选择 设为星标 优质文章,及时送达 原文来自 GitHub 开源社区 Doocs,欢迎 Star 此项目,如果你有独到的见解,同样可以参与贡献此项目. 面试题 讲一讲你理解的微服务架构? ...
最新文章
- crosstab交叉表_透视图和交叉表
- 医疗术语自动编码论文总结 (Automated Coding)
- 【Java】详解菜单组件
- re匹配正则字符串中的起始和结束元字符的使用方法
- java c 转换_Java怎么转换c语言?
- django获取字段列表(values/values_list/flat)
- java编程思想之多态理解
- Android 原生工程接入mPaas框架
- 如何把视频kux格式转换mp4?手机怎么观看kux视频
- 【解决】maven install出现fatal error compiling
- meta标签http-equiv属性的作用
- XXXXXXXXXXX
- 负数在计算机中的表示和存储
- Appium APP UI自动化测试框架介绍
- C# 将PPT转为OFD、DPT、DPS、ODP、POTX、UOP
- 100块钱买100只鸡的故事
- Comprehensive Analysis of Time Series Forecasting Using Neural Networks
- CISCO 640-875 认证题库 更新
- matlab 河道水面线计算,河道水面线计算的可视化实现方法及软件
- 直升机空气动力学基础---002 桨叶的主要参数