题解 | #日期累加#

日期累加

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);
}

}

全部评论

相关推荐

能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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