时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2549
解决:918
-
题目描述:
-
给出年分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
-
-
-
//本题利用Hash思想,将对应平闰年各月分天数存储,免去条件判断
#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int dofm[2][12] = {31, 28 ,31,30,31,30,31,31,30,31,30,31,
31, 29 ,31,30,31,30,31,31,30,31,30,31};
int isR(int year)
{
int res = 0;
if (year%400 == 0)
{
return 1;
}
if (year%4 == 0)
{
if (year%100 == 0)
{
return 0;
}
res = 1;
}
return res;
}
int main()
{
int year, day, i,j;
while (cin >> year >> day)
{
j = isR(year);
for (i=0; i<12; i++)
{
if (day > dofm[j][i])
{
day -= dofm[j][i];
}
else
break;
}
printf("%04d-%02d-%02d\n", year, i+1, day);
}
return 0;
}