题解 | #日期差值#

日期差值

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")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务