#include<iostream>
using namespace std;

int daytab[2][31] = {
    {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 year;
    int month, day;
    int count;
    int flag = -1;
    int caseNum;
    scanf("%d\n", &caseNum);
    while (caseNum--) {
        scanf("%d %d %d %d", &year, &month, &day, &count);
//      flag=(year%4==0&&year%100!=0)||(year%400==0);
//      count+=day;
//      for(int i=month;i<13;i++){
//          if(count-daytab[flag][i]>0)
//          {
//              count-=daytab[flag][i];
//              continue;
//          }
//          else if(count-daytab[flag][i]==0){
//              month=i;
//              day=daytab[flag][i];
//              break;
//          }
//          else{
//              month=i;
//              day=count;
//              break;
//          }
//      }
//      if(i==13)
//      {
//          year++;
//          flag=(year%4==0&&year%100!=0)||(year%400==0);
//          for(int i=month;i<13;i++){
//              if(count-daytab[flag][i]>0)
//              {
//                  count-=daytab[flag][i];
//                  continue;
//              }
//              else if(count-daytab[flag][i]==0){
//                  month=i;
//                  day=daytab[flag][i];
//                  break;
//              }
//              else{
//                  month=i;
//                  day=count;
//                  break;
//              }
//          }
//      }
        //Caution:天数可能跨年,可能跨很多年,这样太麻烦了;
        //答案直接计算最后的年份,月份,日期
        //先把今年的都加在一起
        flag = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
        for (int i = 1; i < month; i++) {
            count += daytab[flag][i];
        }
        count += day;

        while (count > 365 + flag) {
            year++;
            count -= 365 + flag;
            flag = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
        }
        month = 1;
        while (count > daytab[flag][month]) {
            count -= daytab[flag][month];
            month++;
        }
        day = count;
        printf("%d-%02d-%02d\n", year, month, day);
    }
}

Caution:天数可能跨年,可能跨很多年,这样太麻烦了;

答案直接计算最后的年份,月份,日期

先把今年的都加在一起

需要注意的是,本题不是只有一次输入,不是未告知具体有多少组输入,而是明确告知有m组输入