题解 | #日期差值#
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include <iostream>
//思路:
1.计算每个年份与公元元年0月1日的天数差距
2.将两个差距相减得到两个年份的差距
using namespace std;
int GmonthDay(int n,int year)//计算某月与一月的差值
{
int monthDay[13] = {0,0,31,59,90,120,151,181,212,243,273,304,334};//假设为平年,这个平年的某月一日与1月一日的差值
if(n>2&&((year%400==0)||year%4==0&&year%100!=0))//闰年
{
return monthDay[n]+1;//月份大于2时加1,因为只有月份大于二月才能包含2月的天数
}
return monthDay[n];
}
int count(int y,int m,int d)
{
int YearDay = y*365+y/400-y/100+y/4;//计算每年的天数,先按平年算每年365天。若是400的倍数便加1,如果是100的倍数就减1.如果是4的倍数也加一。
int MontDay = GmonthDay(m,y);
return d+YearDay+MontDay;
}
int main() {
int year1,month1,day1;
int year2,month2,day2;
scanf("%4d%2d%2d",&year1,&month1,&day1);
scanf("%4d%2d%2d",&year2,&month2,&day2);
int n1 = count( year1, month1, day1);
int n2= count( year2, month2, day2);
cout<<(n2-n1+1)<<endl;
}
// 64 位输出请用 printf("%lld")
查看15道真题和解析
