作业比赛编号 : 100000578 - 《算法笔记》3.4小节——入门模拟->日期处理 问题 C: 打印日期
思路:根据平常计算步骤,从第一个月算起,计算加上下个月的天数是否大于总天数,如果大于则是说明,日期为本月里的一天,如果小于,则加上本月天数
#include<stdio.h>
int m[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}};
bool isLeap(int year)
{
if(year%400==0||(year%100!=0&&year%4==0))
return true;
return false;
}
int main()
{
int time;
int year,month,day;
int days;
while((scanf("%d %d",&year,&time))!=EOF)
{ days=0;
month=1;
while(true){
if(days+m[month][isLeap(year)]>=time)
break;
else {
days+=m[month][isLeap(year)];
month++;
}
}
printf("%04d-%02d-%02d\n",year,month,time-days);
}
return 0;
}