【hihocoder编程练习赛9】闰秒

题目链接

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 #include<math.h>
 5 #include<iostream>
 6 #include<stdlib.h>
 7 #include<set>
 8 #include<map>
 9 #include<queue>
10 #include<vector>
11 #include<bitset>
12 #pragma comment(linker, "/STACK:1024000000,1024000000")
13 template <class T>
14 bool scanff(T &ret){ //Faster Input
15     char c; int sgn; T bit=0.1;
16     if(c=getchar(),c==EOF) return 0;
17     while(c!=‘-‘&&c!=‘.‘&&(c<‘0‘||c>‘9‘)) c=getchar();
18     sgn=(c==‘-‘)?-1:1;
19     ret=(c==‘-‘)?0:(c-‘0‘);
20     while(c=getchar(),c>=‘0‘&&c<=‘9‘) ret=ret*10+(c-‘0‘);
21     if(c==‘ ‘||c==‘\n‘){ ret*=sgn; return 1; }
22     while(c=getchar(),c>=‘0‘&&c<=‘9‘) ret+=(c-‘0‘)*bit,bit/=10;
23     ret*=sgn;
24     return 1;
25 }
26 #define inf 1073741823
27 #define llinf 4611686018427387903LL
28 #define PI acos(-1.0)
29 #define lth (th<<1)
30 #define rth (th<<1|1)
31 #define rep(i,a,b) for(int i=int(a);i<=int(b);i++)
32 #define drep(i,a,b) for(int i=int(a);i>=int(b);i--)
33 #define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)
34 #define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)
35 #define mem(x,val) memset(x,val,sizeof(x))
36 #define mkp(a,b) make_pair(a,b)
37 #define findx(x) lower_bound(b+1,b+1+bn,x)-b
38 #define pb(x) push_back(x)
39 #define lowbit(x) x&-x
40 using namespace std;
41 typedef long long ll;
42 typedef pair<int,int> pii;
43 int a[2222];
44 int b[23]={72,81,82,83,85,92,93,94,97,112,115}; //11
45 int c[23]={72,73,74,75,76,77,78,79,87,89,90,95,98,105,108,116}; //16
46 int days[33]={0,31,28,31,30,31,30,31,31,30,31,30,31};
47 void gettime(int y1,int m1,int d1,int h1,int mi1,int s1,int &time1)
48 {
49     for(int i=1970;i<y1;i++){
50         if(i%4==0&&i%100!=0||i%400==0){
51             time1+=24*3600*366;
52         }
53         else time1+=24*3600*365;
54         time1+=a[i];
55    }
56
57    for(int i=1;i<m1;i++){
58         time1+=days[i]*24*60*60;
59         if(y1%4==0&&y1%100!=0||y1%400==0)
60         {
61             if(i==2)time1+=24*3600;
62         }
63    }
64   // printf(">>%d\n",time1);
65    for(int i=1;i<d1;i++)time1+=24*3600;
66
67    int pd=0;
68    for(int i=0;i<11;i++)if(y1==1900+b[i])pd=1;
69    if(m1>6&&pd)time1++;
70
71    for(int i=0;i<h1;i++)time1+=3600;
72    for(int i=0;i<mi1;i++)time1+=60;
73    time1+=s1;
74 }
75 int main(){
76    for(int i=1970;i<=2017;i++)
77    {
78         for(int j=0;j<11;j++)a[i]=a[i]+(1900+b[j]==i);
79         for(int j=0;j<16;j++)a[i]=a[i]+(1900+c[j]==i);
80    }
81    int y1,m1,d1,h1,mi1,s1;
82    int y2,m2,d2,h2,mi2,s2;
83    scanf("%d-%d-%d %d:%d:%d",&y1,&m1,&d1,&h1,&mi1,&s1);
84    scanf("%d-%d-%d %d:%d:%d",&y2,&m2,&d2,&h2,&mi2,&s2);
85    int time1=0,time2=0;
86    gettime(y1,m1,d1,h1,mi1,s1,time1);
87    gettime(y2,m2,d2,h2,mi2,s2,time2);
88    printf("%d\n",time2-time1);
89 }

时间: 2024-10-31 14:19:52

【hihocoder编程练习赛9】闰秒的相关文章

hihocoder编程练习赛73 A 地铁站

1 /* 2 Source :hihocoder编程练习73 3 Problem :一个长度为n的串,由若干段1-a[i](假设有Y段)的序列组成,现在中间缺了K个数,问能够还原出来的方案数,需要保证还原出来的子串的个数最少,即最小Y 4 Solution :1.通过分析剩余的序列,我们可以知道原来最少的时候Y是多少,即看原来的序列有多少单调递增的子段. 5 2.进行有解的判断,假设已知序列段中每段的最大值是b[i] i=1..Y,如果sum(b[i]) > N,则说明无解,这是序列的长度一定已

hihocoder 编程练习赛23

第一题:H国的身份证号码I 题意:一个N位的正整数(首位不能是0).每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K.按从小到大的顺序输出所有合法的N位号码,每个号码占一行. 思路:dfs #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N = 20; #define LL long long int n, k, a[N]; void

hihoCoder编程练习赛70

题目1 : 数位翻转 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 n,你可以进行若干次操作,每次操作可以翻转 n 的二进制表示下的某一位,即将 0 变成 1,1 变成 0 现在小 Hi 想知道,至少需要多少次操作,才能将 n 变成 n-1 输入 一个正整数 n 1 ≤ n ≤ 109 输出 输出最少的操作次数 样例输入 10 样例输出 2 1 // 2018-07-29 2 #include <cstdio> 3 #include <cstr

hihoCoder编程练习赛69

题目1 : 偶数长度回文子串 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个小写字母字符串,请判断它是否有长度为偶数的非空连续回文子串 输入 输入包含多组数据. 每组数据包含一行一个小写字母字符串 S 1 ≤ |S| ≤ 105 输出 对于每组数据如果存在,输出YES,否则输出NO 样例输入 cabbad ababa 样例输出 YES NO 1 // 2018-07-29 2 #include <cstdio> 3 #include <cstring

hihoCoder编程练习赛72

题目1 : 玩具设计师 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho作为Z国知名玩具品牌AKIRE的首席设计师,对玩具零件的挑剔程度已经到了叹为观止的地步.所有的玩具零件均在一块由N × M个单位块组成的设计板上切割获得.每个单位块有一个耐用指数aij. 由于玩具制作安全标准要求每个零件的面积至少大于等于S,小Ho想要知道设计板上能切割出满足标准的最大耐用指数的玩具零件为多少. 输入 输入共N+1行,第一行三个整数N,M,S表示设计板的大小以及安全标准中对

hihocoder - [Offer收割]编程练习赛17

hihocoder - [Offer收割]编程练习赛17 题目1 : F1 Score 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和他的小伙伴们一起写了很多代码.时间一久有些代码究竟是不是自己写的,小Hi也分辨不出来了. 于是他实现了一个分类算法,希望用机器学习实现自动分类. 为了评价这个分类算法的优劣,他选出了N份有标记的代码作测试集,并决定用F1 Score作为评价标准. 给出N份代码的实际作者是不是小Hi以及分类算法预测的结果,请你计算F1 Sco

HIHOcoder编程总结

[Offer收割]编程练习赛44 对于第一题题目1 : 扫雷游戏,首先要想清楚思路,虽然是暴力算法,但是这八个方向要自己把坐标写正确,不要慌乱,自己写的时候就写错了一个,第二个就是判断的时候,j + 1>=0,这种是显然的事情,应该是j +1 < N,写草稿也要认真. 还有一个非常非常大的错误. int N = 0; cin >> N; vector<string> input; input.resize(N); for (int i = 0; i < N; ++

hihocoder [Offer收割]编程练习赛18 C 最美和弦(dp)

题目链接:http://hihocoder.com/problemset/problem/1532 题解:一道基础的dp,设dp[i][j][k][l]表示处理到第几个数,当前是哪个和弦错了几次初始x值是多少.这里还要再辅助一个val[k]表示处理到当前情况只错了k次的最小值是多少因为改变的不止是和弦还有初始值,可以看一下代码理解一下. #include <iostream> #include <cstring> #include <cstdio> #include &

hihoCoder [Offer收割]编程练习赛3 D子矩阵求和

子矩阵求和 http://hihocoder.com/discuss/question/3005 声明一下: n是和x一起的,m是和y一起的 x是横着的,y是纵着的,x往右为正,y往下为正 (非常反常规的定义) 性质好题 看起来无从下手. 两个关键性质: 证明挺显然的.画画图 同余方程exgcd即可 子矩阵和? 先算出(0,0)的,每次平移,加减一行一列前n或m个, 细节: 1.纵向要循环到n,横向循环到m 2.注意开long long 3.反常规的设定真讨厌 #include<bits/std