题目1186:打印日期
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:4952
解决:1735
-
题目描述:
-
给出年分m和一年中的第n天,算出第n天是几月几号。
-
输入:
-
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
-
输出:
-
可能有多组测试数据,对于每组数据,
按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
-
样例输入:
-
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
-
答疑:
- 解题遇到问题?分享解题心得?讨论本题请访问: http://t.jobdu.com/thread-7909-1-1.html
-
-
-
#include <stdio.h> #include <algorithm> #include <math.h> #include <string.h> #define Isleap(x) x%100!=0 && x%4==0 || x%400==0 ?1:0 int day_of_month[13][2]={ 0,0, 31,31, 28,29, 31,31, 30,30, 31,31, 30,30, 31,31, 31,31, 30,30, 31,31, 30,30, 31,31 }; struct Date{ int Day; int Month; int Year; void Nextday() { ++Day; if(Day>day_of_month[Month][Isleap(Year)]) { Day=1; Month++; } } }; int buf[5001][13][32]; int main() { int y,d; Date date1; while(scanf("%d%d",&y,&d)!=EOF) { date1.Day=1; date1.Month=1; date1.Year=y; int cnt=1; while(cnt!=d){ date1.Nextday(); cnt++; } printf("%04d-%02d-%02d\n", date1.Year,date1.Month,date1.Day); } return 0; }