题解 | #日期累加#

日期累加

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

#include <iostream>
using namespace std;
int daytab[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}
};
bool isLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int main() {
    int m;
    cin >> m;
    while (m--) {
        int year, month, day, n;
        cin >> year >> month >> day >> n;
        int row = isLeapYear(year);
        while (n) {
            if (day + n <= daytab[row][month]) {
                day += n;
                break;
            } else {
                n -= daytab[row][month] - day;
                day = 0;
                if (month != 12)month++;
                else {
                    year++;
                    month = 1;
                    row = isLeapYear(year);
                }
            }
        }
        printf("%04d-%02d-%02d\n", year, month, day);
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
我是小红是我:学校换成中南
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务