B - 签到题
计算机系统中使用的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 - 签到题的更多相关文章
- A 洛谷 P3601 签到题 [欧拉函数 质因子分解]
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- fjwc2019 D3T1 签到题 (贪心)
#184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位 ...
- CTF-练习平台-WEB之 签到题
一.签到题 根据提示直接加群在群公告里就能找到~
- 洛谷P3601签到题(欧拉函数)
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- 【洛谷九月月赛T1】签到题(bsgs)(快速乘)
说好的签到题呢qwq....怎么我签到题都不会啊qwq 之后看了bsgs才发现貌似不是那么那么难fake!!什么东西... 先贴上部分分做法(也就是枚举1的个数,然后每一步都进行取模(这和最后取模结果 ...
- WEB新手之签到题
写一写web新手赛的题. 这是签到题,开始时需要耐心等待页面中字母全部出现. 字母全部出现后,会跳转到另一个界面,如上图所示.F12没什么特别的地方,这题应该有点难度. 按往常一样,先抓包. 按英文提 ...
- EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】
传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...
- HLJU 1221: 高考签到题 (三分求极值)
1221: 高考签到题 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 9 Solved: 4 [Submit][id=1221">St ...
- Different Integers 牛客多校第一场只会签到题
Given a sequence of integers a1, a2, ..., an and q pairs of integers (l1, r1), (l2, r2), ..., (lq, r ...
- P3794 签到题IV
题目 P3794 签到题IV 来切道水题放松一下吧 做法 或是单调不下降的,\(gcd\)是单调不上升的 \(a_i≤5×10^5\)分成权值不同的块数应该很小,所以随便乱搞就出来了 My compl ...
随机推荐
- 使用Spring Cloud连接不同服务
http://www.infoq.com/cn/articles/spring-cloud-service-wiring 主要结论 Spring Cloud为微服务系统中相互依赖的服务提供了丰富的连接 ...
- CF1080F Katya and Segments Sets
题意:给定n个区间,每个区间有颜色.m次询问,每次询问:这n个区间中所有被包含在[x, y]这一区间中的区间,它们的颜色是否取遍了[l, r]中的所有颜色. 强制在线. 解:第一步是大家都熟悉的套路⑧ ...
- 第四篇:记录相关操作 SQL逻辑查询语句执行顺序
http://www.cnblogs.com/linhaifeng/articles/7372774.html 一 SELECT语句关键字的定义顺序 SELECT DISTINCT <selec ...
- Day26--Python--包
1. from xxxx import * 从xxx导入所有. 如果XXX模块内部有__all__ 导入all中的内容. 如果没有__all__全部都导入 __all__ = ["money ...
- mybatis源码分析(方法调用过程)
十一月月底,宿舍楼失火啦,搞得20多天没有网,目测直到放假也不会来了... 正题 嗯~,其实阅读源码不是为了应付面试,更重要的让你知道,大师是怎样去写代码的,同样是用Java,为啥Clinton Be ...
- 数位DP入门题
站点一览: hdu 2089"不要62" hdu 4734"F(X)" poj 3252"Round Numbers" hdu 3709&q ...
- 网络I/O模型总结
把网络IO模型整理了一下,如下图
- Qt ------ QFileDialog
QString strFile = QFileDialog::getOpenFileName(this,QStringLiteral("选择Excel文件"),"&quo ...
- 洛谷P1073 Tarjan + 拓扑排序 // 构造分层图
https://www.luogu.org/problemnew/show/P1073 C国有 n n个大城市和 mm 条道路,每条道路连接这 nn个城市中的某两个城市.任意两个城市之间最多只有一条道 ...
- 剑指Offer_编程题_5
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. class Solution { public: void push(int node) { if( ...