题解 | #日期累加#

日期累加

https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;

int dayn[3][13]={{0,31,28,31,30,31,30,31,31,30,31,30,32},{0,31,29,31,30,31,30,31,31,30,31,30,32}};

bool isleapyear(int year){
return year%400==0||(year%4==0&&year%100!=0);
}

int numofyear(int year){
    if(isleapyear(year))
        return 366;
    else return 365;
}

int main(){
   int year,month,day,number,row;
   int casenum;
   scanf("%d",&casenum);
   while(casenum--){
    scanf("%d%d%d%d",&year,&month,&day,&number);
    int row=isleapyear(year);
    for(int j=0;j<month;j++)
    number+=dayn[row][j];
   
   number+=day;
   while(number>numofyear(year)){
    number-=numofyear(year);
    year++;
   }
   month=0;
   row=isleapyear(year);
   while(number>dayn[row][month]){
    number-=dayn[row][month];
    month++;
   }
day=number;
printf("%04d-%02d-%02d\n",year,month,day);
}
return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务