题解 | #日期差值#

日期差值

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

#include <iostream>
using namespace std;


int year_gap_day(int year1,int year2)
{
    if(year2<year1)
    {
        int tmp=year1;
        year1=year2;
        year2=tmp;
    }
    int sum=0;
    while(year1!=year2)
    {
        if((year1%4==0&&year1%100!=0)||(year1%400==0))
        ++sum;
        ++year1;
    }
    return sum;
}


//**********************一年第几天*********************************//

int get_year(int year)
{
    if((year%4==0&&year%100!=0)||(year%400==0))
        return 1;
    else
        return 0;
}
int give_day(int year,int mouth,int day)
{
    int sum=0;
    int rl[13]={-1,31,28,31,30,31,30,31,31,30,31,30,31};
    for(int i=1;i<mouth;i++)
    {
        sum+=rl[i];
    }
    sum+=day;
    if(mouth>2)
    {
        sum+=get_year(year);
    }
    return sum;
}
//***************************************************************//


int main() {
    int year1,mouth1,day1,num1;
    cin>>num1;
    year1=num1/10000;
    mouth1=num1%10000/100;
    day1=num1%100;

    int year2,mouth2,day2,num2;
    cin>>num2;
    year2=num2/10000;
    mouth2=num2%10000/100;
    day2=num2%100;

 
    int year_day1=give_day(year1,mouth1,day1);
    int year_day2=give_day(year2,mouth2,day2);
    
    int sum=abs(year_day1-year_day2)+1;
    sum+=(abs(year1-year2)*365);

    sum+=year_gap_day(year1,year2);
    cout<<sum;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

一天代码十万三:这个学历有中大厂实习也是0面,没办法,斩杀线是这样的
点赞 评论 收藏
分享
想玩飞盘的菠萝蜜在春...:上交✌🏻也拒?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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