题解 | #日期累加#

日期累加

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

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

int year, mon, day, remain;

int monday[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 Is_Leap_Year(int year) {
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        return 1;
    }
    return 0;
}

int WholeYear(int year) {
    if (Is_Leap_Year(year)) {
        return 366;
    }
    return 365;
}


int main() {
    int n;
    cin >> n;
    while (n--) {
        cin >> year >> mon >> day >> remain;
        int yeap = Is_Leap_Year(year);


        for (int i = 1; i < mon; i++) {
            remain += monday[yeap][i];
        }
        mon = 1;

        remain += day;
        while (remain > WholeYear(year)) {
            remain -= WholeYear(year);
            year++;
        }
        yeap = Is_Leap_Year(year);
        for (int i = 1; ; i++) {
            if (remain > monday[yeap][i]) {
                remain -= monday[yeap][i];
                mon++;
            } else {
                break;
            }
        }
        day = remain;
        printf("%d-%02d-%02d\n", year, mon, day);
    }


}
//泰裤辣
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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