题解 | #日期差值#
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include <iostream>
#include <iterator>
using namespace std;
class date
{
public:
int _year;
int _month;
int _day;
bool operator<(const date& d2)
{
if (_year<d2._year)
{
return true;
}
else if (_year == d2._year && _month < d2._month)
{
return true;
}
else if (_year == d2._year && _month == d2._month
&& _day < d2._day)
{
return true;
}
else
{
return false;
}
}
int get_Month_day(int year, int month)
{
int month_day[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
if (month==2 && (year % 100 != 0 && year % 4 == 0)
|| year % 400 == 0)
{
month_day[2] = 29;
}
return month_day[month];
}
date& operator+=(int day)
{
_day = _day + day;
while (_day > get_Month_day(_year,_month))
{
_day = _day - get_Month_day(_year, _month);
++_month;
if (_month>12)
{
++_year;
_month = 1;
}
}
return *this;
}
date operator+(int day)
{
date temp(*this);
temp += day;
return temp;
}
int operator-(const date& d2)
{
date max = *this;
date min = d2;
int flag = 1;
if (*this < d2)
{
max = d2;
min = *this;
flag = -1;
}
int count = 0;
while (min < max)
{
min=min+1;
count++;
}
return count+1;
}
};
void setDate(int a ,date& d)
{
d._day = a%100;
a=a/100;
d._month=a%100;
a=a/100;
d._year= a;
}
int main() {
unsigned int a, b;
date d1;
date d2;
while(cin>>a>>b)
{
setDate(a,d1);
setDate(b,d2);
int ret;
ret = d2-d1;
cout<<ret;
}
}
// 64 位输出请用 printf("%lld")
查看14道真题和解析