• 【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=='
    '){ 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
    ",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
    ",time2-time1);
    89 }
    View Code
  • 相关阅读:
    第三周作业
    第二周作业
    计算机基础学习心得
    第三次作业
    第2次作业(指针总结)
    2018(上)C高级第0次作业
    本学期最后一次作业 总结。
    第十四、十五周作业
    第七周作业
    第六周作业
  • 原文地址:https://www.cnblogs.com/dirge/p/6537997.html
Copyright © 2020-2023  润新知