日期差值——一种快速的求解方法(Hash的思想)

来源:互联网 发布:mac android sdk 路径 编辑:程序博客网 时间:2024/05/22 07:04
#include <cstdio>#define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0int day[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};struct Date{    int d,m,y;    void next(){        d++;        if(d>day[m][ISYEAP(y)]){            d=1;m++;            if(m>12){m=1;y++;}        }    }};int buf[5001][13][32];int Abs(int x){    return x<0?-x:x;}int main(){    Date tmp;    int cnt=0;    tmp.y=0,tmp.m=1,tmp.d=1;    while(tmp.y!=5001){        buf[tmp.y][tmp.m][tmp.d]=cnt;        tmp.next();        cnt++;    }    int y1,m1,d1;    int y2,m2,d2;    while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF){        scanf("%4d%2d%2d",&y2,&m2,&d2);        printf("%d\n",Abs(buf[y2][m2][d2]-buf[y1][m1][d1])+1);    }    return 0;}

0 0
原创粉丝点击