题解 | 日期差值

日期差值

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

#include <iostream>
using namespace std;

int main() {
    int y, m, d;
    int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    string d1, d2;
    while (cin >> d1 >> d2) {
        int y1 = 0, y2 = 0, m1 = 0, m2 = 0, d11 = 0, d22 = 0;
        for (int i = 0; i < 4; i++) {
            y1 += d1[i] - '0';
            y1 *= 10;
            y2 += d2[i] - '0';
            y2 *= 10;
        }
        for (int i = 4; i < 6; i++) {
            m1 += d1[i] - '0';
            m1 *= 10;
            m2 += d2[i] - '0';
            m2 *= 10;
        }
        for (int i = 6; i < 8; i++) {
            d11 += d1[i] - '0';
            d11 *= 10;
            d22 += d2[i] - '0';
            d22 *= 10;
        }
        y1 /= 10;
        y2 /= 10;
        m1 /= 10;
        m2 /= 10;
        d11 /= 10;
        d22 /= 10;
        int c1 = 0, c2 = 0;
        for (y = 0; y <= y1; y++) {
            if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
                months[2] = 29;
            } else {
                months[2] = 28;
            }
            if (y != y1) {
                for (m = 1; m <= 12; m++) {
                    for (d = 1; d <= months[m]; d++) {
                        c1++;
                    }
                }
            } else {
                for (m = 1; m <= m1; m++) {
                    if (m != m1) {
                        for (d = 1; d <= months[m]; d++) {
                            c1++;
                        }
                    } else {
                        for (d = 1; d <= d11; d++) {
                            c1++;
                        }
                    }
                }
            }
        }
        for (y = 0; y <= y2; y++) {
            if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
                months[2] = 29;
            } else {
                months[2] = 28;
            }
            if (y != y2) {
                for (m = 1; m <= 12; m++) {
                    for (d = 1; d <= months[m]; d++) {
                        c2++;
                    }
                }
            } else {
                for (m = 1; m <= m2; m++) {
                    if (m != m2) {
                        for (d = 1; d <= months[m]; d++) {
                            c2++;
                        }
                    } else {
                        for (d = 1; d <= d22; d++) {
                            c2++;
                        }
                    }
                }
            }
        }
        cout << c2 - c1 + 1 << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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