题解 | #日期差值#
日期差值
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")