题解 | #日期差值#

日期差值

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

#include <iostream>
#include <string>
using namespace std;

bool isRunnian(int year){
    return year%400==0||year%4==0&&year%100!=0;
}
int sumDay(int year1,int month1,int day1,int year2 , int month2, int day2){
    int dayOfMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int day=0;
    for(int i=year1;i<=year2;i++){
        if(isRunnian(i))
            dayOfMonth[2]=29;
        else
            dayOfMonth[2]=28;
        
        for (int j=(i==year1?month1:1);j<=(i==year2?month2:12);j++) {
             if(i==year1&&j==month1&&i==year2&&j==month2) {
                 day=day2-day1+1;
             } else if(i==year1&&j==month1) {
                 day=day+dayOfMonth[j]-(day1-1);
             } else if(i==year2&&j==month2)  {
                 day= day+day2;
             } else
                 day=day+dayOfMonth[j];
        }
    }
    return day;
}
int main() {
    int day1,day2,mon1,mon2,year1,year2;
    scanf("%4d%2d%2d",&year1,&mon1,&day1);
    scanf("%4d%2d%2d",&year2,&mon2,&day2);
    cout<<sumDay(year1,mon1,day1,year2,mon2,day2)<<endl;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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