日期-三板斧:
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);
return months[m];
}
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
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);
return months[m];
}
int main()
{
int y, s;
while(cin>>y>>s)
{
int m = 1, d = 1;
s --;
while(s --)
{
if(++ d > get_days(y, m)) //拿每一次月份的天数做限制
{
d = 1; //如果超过了月份,日期d就归1
if(++ m > 12) //保证月份m合法
{
m = 1; //如果月份m超了,那就把年份y加1
y ++;
}
}
}
printf("%04d-%02d-%02d\n",y,m,d);
}
return 0;
}