题解 | #日期差值#

日期差值

http://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c

#include<iostream>
#include<cstdio>
using namespace std;
int DayTab[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},
};
bool IsLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int YearTab[2] = { 365,366 };
int main() {
    int year1, month1, day1;
    int year2, month2, day2, minyear, maxyear;
    int number, num1, num2;
    while (scanf("%04d%02d%02d\n%04d%02d%02d", &year1, &month1, &day1, &year2, &month2, &day2) != EOF) {
        number = 0;
        minyear = year1 < year2 ? year1 : year2;
        maxyear = (minyear == year1) ? year2 : year1;
        while (minyear < maxyear) {
            number += YearTab[IsLeapYear(minyear)];
            ++minyear;
        }
        num1=0;
        for (int i = 0; i < month1; ++i) {
            num1 += DayTab[IsLeapYear(year1)][i];
        }
        num1 += day1;
        num2=0;
        for (int i = 0; i < month2; ++i) {
            num2 += DayTab[IsLeapYear(year2)][i];
        }
        num2 += day2;
        number += (year1 < year2 ? (num2 - num1+1) : (num1 - num2+1));
        cout << number << endl;
    }
    return 0;
}
全部评论

相关推荐

09-08 17:17
同济大学 Java
狗不理fe:里面的人劝一句,别来虾,我们部门24校招生淘汰率30%,还有一些人说有一年保护期,不可能!!!
我的秋招日记
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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