九度OJ题目1186:打印日期
2015-03-02 02:41
190 查看
题目1186:打印日期
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:4952
解决:1735
题目描述:
给出年分m和一年中的第n天,算出第n天是几月几号。
输入:
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
输出:
可能有多组测试数据,对于每组数据,
按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
样例输入:
样例输出:
来源:2003-2005年华中科技大学计算机研究生机试真题
答疑:解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7909-1-1.html
时间限制: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
来源:2003-2005年华中科技大学计算机研究生机试真题
答疑:解题遇到问题?分享解题心得?讨论本题请访问: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; }