http://ac.jobdu.com/problem.php?pid=1096
计算每个日期的总日子,然后相减。
#include <stdio.h>
static int days = 365;
static int month[13] = {
0,31,28,31,30,31,30,31,31,30,31,30,31
};
int leap(int year){
if(!year) return 0;
return year/4 - year/100 + year/400;
}
bool isLeap(int year){
if(year%400 == 0 || (year%100 && year%4 == 0)) return 1;
return 0;
}
int calcu(int y, int m, int d){
int res = (y-1)*days + leap(y-1);
for (int i = 1; i < m; ++i) {
res += month[i];
}
if(isLeap(y)&&m>2) res++;
res+= d;
return res;
}
int main(){
int y0,y1,m0,m1,d0,d1;
while(scanf("%4d%2d%2d",&y0,&m0,&d0) !=EOF){
scanf("%4d%2d%2d",&y1,&m1,&d1);
printf("%d\n",calcu(y1,m1,d1) - calcu(y0,m0,d0)+1);
}
}