题解 | #日期差值#

日期差值

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

#include <iostream>
using namespace std;

class Date
{
public:
int GetMonthDay(int year, int month)
{
	if (month == 2 && (year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
	{
		return 29;
	}
	static int monthday[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	return monthday[month];
}
    Date(int year,int month,int day)
    {
        _year = year;
        _month = month;
        _day = day;
    }
     bool operator>(Date d)
     {
        	if (_year >= d._year)
	{
		if (_year == d._year)
		{
			if (_month >= d._month)
			{
				if (_month == d._month)
				{
					return _day > d._day;
				}
				else
				{
					return true;
				}
			}
		}
		else
		{
			return true;
		}
	}
	return false;
     }
     bool operator!=(Date d)
     {
        if (_year == d._year && _month == d._month && _day == d._day)
	        return false;
    return true;
     }
    Date& operator+=(int day)
    {
        _day += day;
while (_day > GetMonthDay(_year,_month))
{
	_day -= GetMonthDay(_year, _month);
	if (_month == 12)
	{
		_month = 1;
		_year++;
	}
	else
	{
		_month++;
	}
}
return *this;   
    }
    int _year;
    int _month;
    int _day;
};

int main() {
   int D1,D2;
   cin >> D1 >> D2;
   int year1 = D1/10000;
   int year2 = D2/10000;
   int month1 = (D1%10000)/100;
   int month2 = (D2%10000)/100;
   int day1 = D1%100;
   int day2 = D2%100;
   Date Date1(year1,month1,day1);
   Date Date2(year2,month2,day2);
    Date max = Date1;
    Date min = Date2;
    if(min > max)
    {
        max = Date2;
        min = Date1;
    }
    int cnt = 1;
   while(min != max)
   {
        min+=1;
        cnt++;
   }
   cout << cnt;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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