#include "stdio.h"
/*
解題思路
1.先算出同一年下不同日期
2.再計算出相隔年下的不同日期
3.最終拓展計算所有的日期計算
*/
//判斷閏年平年函數
int is_leap(int year)
{
if ((year%400==0)||(year%4==0&&year%100!=0))
{
return 1;
}
return 0;
}
//判斷並使用數組
int* type(int x,int* leap,int* nonleap)
{
if(x) {return leap;}
return nonleap;
}
//計算同一年下的天數函數
int day1(int year1,int mon1,int day1,int mon2,int day2,int* leap,int* nonleap)
{
int i,j=0,same;
int sum=0;
int* year_type;
//判斷類型
year_type = type(is_leap(year1),leap,nonleap);
for(i = mon1+1;i<=mon2-1;i++)
{
j = j + year_type[i];
}
//判斷是否同一個月
same = mon1==mon2?0:mon1;
sum = year_type[same] - day1 + j + day2;
return sum;
}
//計算不同年份的函數
int day2(int year1,int year2,int mon1,int day1,int mon2,int day2,int* leap,int* nonleap)
{
int* year_type1;
int* year_type2;
int i,j1=0,j2=0,sum1=0,sum2=0,sum3=0,sum4=0;
year_type1 = type(is_leap(year1),leap,nonleap);
year_type2 = type(is_leap(year2),leap,nonleap);
//計算年份一
for(i = mon1+1;i<=12;i++)
{
j1 = j1 + year_type1[i];
}
sum1 = year_type1[mon1] - day1 + j1 ;
//計算年份二
for(i = 1;i<mon2;i++)
{
j2 = j2 + year_type2[i];
}
sum2 = day2 + j2 ;
//計算間隔年
sum3 = day3(year1,year2);
//計算總數
sum4 = sum1 + sum2 + sum3;
return sum4;
}
//計算兩個年份中間的年份
int day3(int year1,int year2)
{
int i,j=0,sum=0,x;
for(i=year1+1;i<year2;i++)
{
//常識--閏年366,平年365
x = is_leap(i)==1?366:365;
j = j + x;
//printf("%d",j);
}
sum = j ;
//printf("%d",year1-year2);
return sum;
}
int main()
{
//同一年用day1------------不同用day2;
int y1,m1,d1,y2,m2,d2;
int leap_year[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int nonleap_year[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d-%d-%d",&y1,&m1,&d1);
scanf("%d-%d-%d",&y2,&m2,&d2);
if (y1==y2){printf("%d\n",day1(y1,m1,d1,m2,d2,leap_year,nonleap_year));}
else{printf("%d\n",day2(y1,y2,m1,d1,m2,d2,leap_year,nonleap_year));}
return 0;
}