#include <iostream> #include <stack> #include <string> #include<queue> #include<vector> using namespace std; bool is_runnian(int year) { return (year % 400 == 0) || year % 4 == 0 && year % 100 != 0; } int monthday[2][13] = { { 0,31,28,31,30,31,30,31,31,30,31,30,31 }, { 0,31,29,31,30,31,30,31,31,30,31,30,31 } }; int dayOFyear(int year, int month, int day) { int leap = is_runnian(year) ? 1 : 0; int day_year = 0; for(int i = 1; i < month; i++) { day_year += monthday[leap][i]; } return day_year + day; } void cout_year_month_day(int year, int daysum) { int leap = is_runnian(year) ? 1 : 0; while (daysum >=(365 + leap)) { daysum =daysum - (365 + leap); year++; leap = is_runnian(year) ? 1 : 0; }int day_result=0; int day_total=0; int month_result = 0; leap = is_runnian(year) ? 1 : 0; for (int i = 1; i < 13; i++) { day_result = daysum - day_total; day_total += monthday[leap][i]; if (daysum <= day_total) { month_result = i; break; } } printf("%04d-%02d-%02d\n", year, month_result, day_result); } int main() { int m; int year, month, day, add_day; cin >> m; while (cin >> year >> month >> day >>add_day) { int daysum = dayOFyear(year, month, day) + add_day; cout_year_month_day(year, daysum); } }