题解 | #日期差值#

日期差值

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

#include <iostream>
#include <cmath>
using namespace std;
//重点学习
//利用scanf在输入的时候将字符串存为数字

int p[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int Run(int k)
{
    if((k%400==0)||((k%4==0)&&(k%100!=0)))return 1;
    else return 0;
}
int main() {

    int y1,y2,m1,m2,d1,d2;
    scanf("%4d%2d%2d",&y1,&m1,&d1);
    scanf("%4d%2d%2d",&y2,&m2,&d2);
 //算出距离0000-00-00的绝对时间,再相减即
 //这样就不用再比较哪个日期在后了
    int sum1=0,sum2=0;
 
    for(int i=0;i<=y1-1;i++)
    {
        if(Run(i)==1)sum1+=366;
        else sum1+=365;
    }
    if(Run(y1)==1)p[2]=29;
    else p[2]=28;
    for(int i=1;i<=m1-1;i++)
    {
        sum1+=p[i];
    }
    sum1+=d1;

    for(int i=0;i<=y2-1;i++)
    {
        if(Run(i)==1)sum2+=366;
        else sum2+=365;
    }
    if(Run(y2)==1)p[2]=29;
    else p[2]=28;
    for(int i=1;i<=m2-1;i++)
    {
        sum2+=p[i];
    }
    sum2+=d2;

    int dif=abs(sum1-sum2)+1;
    cout<<dif;

    
}

全部评论

相关推荐

用微笑面对困难:你出于礼貌叫了人一声大姐,大姐很欣慰,她真把你当老弟
点赞 评论 收藏
分享
10-28 10:48
已编辑
门头沟学院 Java
孩子我想要offer:发笔试后还没笔试把我挂了,然后邮箱一直让我测评没测,后面不知道干嘛又给我捞起来下轮笔试,做完测评笔试又挂了😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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