AcWing 3498. 日期差值
原题链接
题目描述

代码实现
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int months[]={
0,31,28,31,30,31,30,31,31,30,31,30,31
};
int is_leap(int year)
{
if((year%100&&year%4==0)||year%400==0)
return 1;
return 0;
}
int get_month_days(int year,int month)
{
int res=months[month];
if(month==2) return res+=is_leap(year);
return res;
}
int get_total_days(int year,int month,int day)
{
int res=0;
for(int i=1;i<year;i++)
if(is_leap(i)) res+=366;
else res+=365;
for(int i=1;i<month;i++)
res+=get_month_days(year,i);
res+=day;
return res;
}
int main()
{
int y1,m1,d1,y2,m2,d2;
while(scanf("%04d%02d%02d",&y1,&m1,&d1)!=-1)
{
scanf("%04d%02d%02d",&y2,&m2,&d2);
printf("%d\n",abs(get_total_days(y1,m1,d1)-get_total_days(y2,m2,d2))+1);
}
return 0;
}