题解 | #日期差值#

日期差值

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

#include <algorithm>
#include <climits>
#include <cstdio>
#include <iostream>
using namespace std;
class Date
{
public:
//构造函数
Date(int year=1,int month=1,int day=1)
:_year(year)
,_month(month)
,_day(day)
{}

//获取每个月的天数
static int Getmonth(int year, int month, int day) 
{
    static int GetMonth[13] = { -1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    //判断是不是闰年
    if ((month == 2) && ((year % 400 == 0) || ((year % 100 != 0 && year % 4 == 0)))) 
    {
        return 29;
    }
    return GetMonth[month];
}
//比较是否相等
bool operator==(const Date& d)
{
    return _year==d._year &&_month==d._month && _day==d._day;    
}
//比较是否相等
bool operator!=(const Date& d)
{
    return !(*this==d);   
}
//日期的比较
bool operator<(const Date& d)
{
    if (_year < d._year) 
    {
        return true;
    }    
    else if (_year==d._year && _month < d._month) 
    {
        return true;
    }
    else if (_year==d._year && _month == d._month && _day < d._day) 
    {
        return true;
    }
    return false;
}
//日期的加法
Date& operator+=(int day)
{
    _day+=day;
    while (_day>this->Getmonth( _year,  _month,  _day)) 
    {
        _day-=Getmonth( _year,  _month,  _day);
        ++_month;
        if (_month>12) 
        {
            ++_year;
            _month = 1;
        }
    }
    return *this;
}
//日期之间的差值
int operator-(const Date& d)const
{
    Date max = *this;
    Date min = d;
    if (max < min) 
    {
        min = *this;
        max = d;
    }
    int count=1;
    while (max != min) 
    {
        min+=1;
        ++count;
    }
    return count;
}
private:
int _year;
int _month;
int _day;
};

int main() 
{
    int year1;int month1;int day1;
    int year2;int month2;int day2;
    //cin >> year1 >> month1 >> day1;
    //cin >> year2 >> month2 >> day2;
    
    scanf("%4d%2d%2d",&year1,&month1,&day1);
    scanf("%4d%2d%2d",&year2,&month2,&day2);
    Date A(year1,month1,day1);
    Date B(year2,month2,day2);
    
    int ret=A-B;
    cout<<ret;

    return 0;
}

https://blog.csdn.net/Jason_from_China/article/details/142516352

这里本质就是一个日期类的实现,可以看一下我写的日期类的博客,我这里把需要的代码拷贝一下没有做过多逻辑操作

这里需要注意两个点:

1,输入格式的问题,牛客这里是直接输入一大串连续的数值,所以需要你自己区分开

2,每个人对于日期的差值的理解是不一样的,就像我会认为是22-11就是10天差值,但是牛客会认为差值是11天

3,正规来说需要写一个输入流和输出流,但是我觉得麻烦也不想改太多,所以直接采取scanf单个输入的方式进行输入

全部评论

相关推荐

刚刷到字节跳动官方发的消息,确实被这波阵仗吓了一跳。在大家还在纠结今年行情是不是又“寒冬”的时候,字节直接甩出了史上规模最大的转正实习计划——ByteIntern。咱们直接看几个最硬的数,别被花里胡哨的宣传词绕晕了。首先是“量大”。全球招7000多人是什么概念?这几乎是把很多中型互联网公司的总人数都给招进来了。最关键的是,这次的资源分配非常精准:研发岗给了4800多个Offer,占比直接超过六成。说白了,字节今年还是要死磕技术,尤其是产品和AI领域,这对于咱们写代码的同学来说,绝对是今年最厚的一块肥肉。其次是大家最关心的“转正率”。官方直接白纸黑字写了:整体转正率超过50%。这意味着只要你进去了,不划水、正常干,每两个人里就有一个能直接拿校招Offer。对于2027届(2026年9月到2027年8月毕业)的同学来说,这不仅是实习,这简直就是通往大厂的快捷通道。不过,我也得泼盆冷水。坑位多,不代表门槛低。字节的实习面试出了名的爱考算法和工程实操,尤其是今年重点倾斜AI方向,如果你简历里有和AI相关的项目,优势还是有的。而且,转正率50%也意味着剩下那50%的人是陪跑的,进去之后的考核压力肯定不小。一句话总结:&nbsp;27届的兄弟们,别犹豫了。今年字节这是铁了心要抢提前批的人才,现在投递就是占坑。与其等到明年秋招去千军万马挤独木桥,不如现在进去先占个工位,把转正名额攥在手里。
喵_coding:别逗了 50%转正率 仔细想想 就是转正与不转正
字节7000实习来了,你...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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