Loading... ### 题目要求 给出年份 y 和一年中的第 d 天,算出第 d 天是几月几号。 ### 输入格式 输入包含多组测试数据。 每组数据占一行,包含两个整数 y 和 d。 ### 输出格式 每组数据输出一行一个结果,格式为 yyyy-mm-dd。 ### 数据范围 输入最多包含 100 组数据, 1≤y≤3000, 1≤d≤366, 数据保证合法。 ### 示例输入: ``` 2000 3 2000 31 2000 40 2000 60 2000 61 2001 60 ``` ### 示例输出: ``` 2000-01-03 2000-01-31 2000-02-09 2000-02-29 2000-03-01 2001-03-01 ``` ### 题目分析 模拟 ### 代码实现 ``` #include <iostream> using namespace std; const int N = 13; int days[N] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; inline bool isLeap(const int& y) { return (y % 4 == 0 && (y % 100 || !(y % 400))); } inline int getDay(const int& y, const int& m) { if (m == 2) return days[2] + isLeap(y); return days[m]; } int y, t; int main () { ios::sync_with_stdio(0); cin.tie(0); while(cin >> y >> t) { int m = 1, d = 1; --t; while(t) { --t; ++d; if (d > getDay(y,m)) { d = 1; ++m; } } printf("%04d-%02d-%02d\n",y,m,d); } return 0; } ``` 最后修改:2023 年 09 月 23 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏