文章
15
粉丝
68
获赞
0
访问
8.0k
这种题的本质就是单纯的顺序检索题,这个代码还可以优化,就是不用day,直接在else情况下break,此时输出为year,month,n,注意输出的格式
#include <bits/stdc++.h>
using namespace std;
int isLeap(int year){
if(year%400==0||(year%4==0&&year%100!=0)){
return 1;
}else return 0;
}
int main(){
int year,n;
int monthdata[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
while(scanf("%d %d",&year,&n)!=EOF){
int a=isLeap(year);
int month=1;int day=0;
for(int i=1;i<13;i++){
if(n>monthdata[a][i]){
n-=monthdata[a][i];
month++;
}else{
day=n;
break;
}
}
printf("%04d-%02d-%02d\n",year,month,day);
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发