给出年份 yy 和一年中的第 dd 天,算出第 dd 天是几月几号。
输入格式
输入包含多组测试数据。
每组数据占一行,包含两个整数 yy 和 dd。
输出格式
每组数据输出一行一个结果,格式为 yyyy-mm-dd
。
数据范围
输入最多包含 100100 组数据,
1≤y≤30001≤y≤3000,
1≤d≤3661≤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<bits/stdc++.h>
using namespace std;
const int months[13]={
0,31,28,31,30,31,30,31,31,30,31,30,31//月份数组
};
int is_leap(int year)//闰年返回1 不是闰年返回0
{
if(year % 4 ==0 && year % 100|| year % 400 ==0 )
return 1;
return 0;
}
int get_days(int y ,int m)//y年m月有多少天
{
if(m==2) return months[m]+is_leap(y);
else
return months[m];
}
int get_year_days(int y,int m)
{
if(m<=2) return 365+is_leap(y);
return 356+is_leap(y+1);
}
int main(){
int y,s;
while(scanf("%d %d",&y,&s)!=EOF)
{
int m=1,d=0;
while(s--)
{
d++;
if(d > get_days(y,m))
{
d=1;
m++;
if(m > 12)
{
m=1;
y++;
}
}
}
printf("%04d-%02d-%02d\n",y,m,d);
}
return 0;
}