#include <iostream> using namespace std; #include <assert.h> class Date { public: Date(int year = 0,int month = 0,int day = 0) :_year(year) ,_month(month) ,_day(day) {} inline int GetMonthDay(int year, int month) { assert(month > 0 && month < 13); static int monthDayArray[13] = { -1, 31, 28, 31, 30, 31, 30, 31, 31, 30,31, 30, 31 }; // 365天 5h + if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || (year % 400 ==0))) { return 29; } else { return monthDayArray[month]; } } void Print() { // cout<<_year<<"-"<<_month<<"-"<<_day<<endl; //输出把我打败了 printf("%04d-%02d-%02d\n",_year,_month,_day); } Date& operator+=(int day) { _day += day; // =不执行,比如下个月28,则就是x月28天 while(_day>GetMonthDay(_year,_month)) { _day -= GetMonthDay(_year, _month); ++_month; if(_month == 13) { _month = 1; ++_year; } } return *this; } private: int _year; int _month; int _day; }; int main() { int year = 0; int numbers_of_day = 0; while(scanf("%d%d",&year,&numbers_of_day)!=EOF) { Date d(year,1,0); d+=numbers_of_day; d.Print(); } return 0; }