#include <iostream> #include <cstdio> #include <array> using namespace std; bool isLeapYear(int year) { return year % 4 == 0 && year % 100 != 0 || year % 400 == 0; } array<array<int, 13>, 2> dayTab = { { {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 main() { int n; while (cin >> n) { // 注意 while 处理多个 case for (int i = 0; i < n; i++) { int year, month, day; int add; cin >> year >> month >> day >> add; add += (day-1); day = 1; // 从第一天开始,方便计算 int isLeap = isLeapYear(year); while (add > dayTab[isLeap][month]) { add -= dayTab[isLeap][month]; day = 1; if (month > 12) { year ++; isLeap = isLeapYear(year); // 跨年更新闰年标记 month = 1; } else { month++; } } day += add; printf("%04d-%02d-%02d\n", year, month, day); } return 0; } } // 64 位输出请用 printf("%lld")