题解 | 打印日期
#include <bits/stdc++.h> #include <cstdio> using namespace std; int date[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} }; bool isLeapYear(int year){ return (year%4==0&&year%100!=0)||year%400==0; } int main() { int year, day; while (cin >> year >> day) { int month=0,k=0,i=0; if(isLeapYear(year))k=1; while(date[k][i]<day){ day-=date[k][i];i++;month++; } printf("%04d-%02d-%02d\n",year,month,day); } }
直接扫就行了,这个没跨年