#include<iostream>
using namespace std;
#define leap(x) (x%100!=0&&x%4==0||x%400==0 ?1:0)
struct date{
int year;
int month;
int day;
}Date;
const int yd[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int count(date x)
{
int sum=0;
int y=x.year;
int m=x.month;
int d=x.day;
for(int i=0;i<y;i++)
{
if(leap(i))
sum+=366;
else
sum+=365;
}
for(int j=0;j<m;j++)
sum+=yd[leap(y)][j];
sum+=d;
return sum;
}
int Abs(int x)
{
return x>0?(x):-(x);
}
int main()
{
date a,b;
while(scanf("%4d%2d%2d",&a.year,&a.month,&a.day)!=EOF)
{
scanf("%4d%2d%2d",&b.year,&b.month,&b.day);
printf("%d\n",Abs(count(a)-count(b))+1);
}
return 0;
}
思路:当两个数的差不好算的时候,二者都和另一个数(参考系)的差容易算,那么就用这个函数进行计算。
技巧:这题适合构造结构体,用c语言比较方便一些。