题目1186:打印日期 九度OJ
2017-04-01 21:47
190 查看
题目1186:打印日期
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:10309
解决:3522
题目描述:
给出年分m和一年中的第n天,算出第n天是几月几号。
输入:
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
输出:
可能有多组测试数据,对于每组数据,
按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
样例输入:
样例输出:
来源:2003-2005年华中科技大学计算机研究生机试真题
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:10309
解决:3522
题目描述:
给出年分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年华中科技大学计算机研究生机试真题
#include <iostream> #include <cstdio> #define ISLEAP(x) (x%4==0&&x%100!=0)||x%400==0 ?1:0 using namespace std; int dayOfMonth[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}; int main(){ int year,days; while(scanf("%d%d",&year,&days)!=EOF){ int month=1; while(days>dayOfMonth[month][ISLEAP(year)]){ days-=dayOfMonth[month][ISLEAP(year)]; month++; } printf("%.4d-%.2d-%.2d\n",year,month,days); } return 0; }