题解 | #日期累加#

日期累加

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

#include <iostream>
using namespace std;
int IsLeapY(int y){
    if(y%400==0 || (y%4==0 && y%100!=0)) return 1;
    else return 0;
}
int day[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}};
int dayOfYear(int x){
    if(IsLeapY(x)==1) return 366;
    else return 365;
}
int main() {
    int yr,mh,d,l,m;
    cin>>m;
    while(m>0){
        cin>>yr>>mh>>d>>l;
        m--;
        while(l>dayOfYear(yr)) {
            l-=dayOfYear(yr);
            yr++;
        }
        while(l>day[IsLeapY(yr)][mh]){
            l-=day[IsLeapY(yr)][mh];
            if(mh==12){
            	yr++;
            	mh=1;
			}
            else mh++;
        }
        d+=l;
        if(d>day[IsLeapY(yr)][mh]){
            d-=day[IsLeapY(yr)][mh];
            if(mh==12){
                mh=1;
                yr++;
            }
            else mh++;
        }
        printf("%04d-%02d-%02d",yr,mh,d);
        cout<<endl;
    }
    
}

全部评论

相关推荐

自由水:这HR已经很好了,多的是已读不回和不读了
点赞 评论 收藏
分享
05-12 17:28
已编辑
门头沟学院 硬件开发
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务