题目
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入
输入包含多组测试数据。
每组数据占两行,分别表示两个日期,形式为 YYYYMMDD。
输出
每组数据输出一行,即日期差值。
样例
输入样例:
20110412
20110422
输出样例:
11
代码
#include<iostream>
using namespace std;int st,ed;
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};bool isDate(int date){int year = date/10000;int month = (date %10000) /100;int day = date % 100;if(month>12 || month<1 || day <= 0 || day>31) return false;if(month!=2) return day<=months[month];if(month==2){if((year%4==0 && year%100!=0) || year%400==0) return day<=29;return day<=28;}return false;
}int get(int year){if((year%4==0 && year%100!=0) || year%400==0) return 366;return 365;
}int main(){while(scanf("%d%d",&st,&ed)!=-1){int res = 0;if(st>ed) swap(st,ed);int y1 = st / 10000,y2 = ed/10000;for(int i=st;i/10000<y1+1;i++){if(isDate(i)) res++;}for(int i=y1+1;i<=y2;i++){res += get(i);}for(int i=ed+1;i/10000<y2+1;i++) if(isDate(i)) res--;printf("%d\n",res);}
}