您的位置:首页 > 其它

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

2016-10-27 11:00 274 查看
#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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  日期类问题