题解 | #日期累加#

日期累加

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

#include<iostream>using namespace std;

int ifrun(int year){if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 1;else return 0;}

int main(){int n; cin >> n;while (n--){int y, m, d, day;cin >> y >> m >> d >> day;int md[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 num = d;
    for (int i = 1; i < m; i++) num += md[ifrun(y)][i]; //记录当前日期所在第几天

        y += (num + day) / (ifrun(y) + 365); //确定年份
        day -= md[ifrun(y)][m] - d; //减去当月还剩多少天
        while (day > md[ifrun(y)][((m%12)+1)]) //当下一个月够减时 循环相减 找到day天以后所在月份,当不够减时 即可找出所在月份的所在天数
        {
            m = (m% 12)+1; 
            day -= md[ifrun(y)][m];
        }
        printf("%04d-%02d-%02d\n", y, (m+1)%12, day);
}

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 16:22
主包是26应届生,投大厂简历一直过不了初筛,想问问大家有必要花钱改简历吗
Java抽象带篮子:我之前专门发个帖子说不要付费改简历的,里面还详细写了简历怎么写,你可以去看看
点赞 评论 收藏
分享
字节一直是我的白月光,考虑到转正还是拒了日常实习。
从明天开始狠狠卷JV...:为什么你释放的offer没流到我头上
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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