题解 | #日期累加#

日期累加

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

#include <iostream>
using namespace std;
#define isyear(x)  ((x%4 ==0)&&(x%100 !=0)||(x%400 == 0))



    void GetNewDay(int year,int month,int day,int addday)
    {
        int _year=year;
        int _month=0;
        int _day=0;
        static int Day[13][2]={0,0 ,31,31, 59,60, 90,91, 120,121, 151,152, 181,182, 212,213, 243,244, 273,274, 304,305, 334,335, 365,366};
        int daysum=Day[month-1][isyear(year)]+addday+day;
        while(daysum>Day[12][isyear(_year)])
        {
            daysum-=Day[12][isyear(_year)];
            _year++;
        }
        for(int i=0;i<13;++i)
        {
            if(daysum>Day[i][isyear(_year)])
            {

            }
            else
            {
                _month=i;
                _day=daysum-Day[i-1][isyear(_year)];
                break;
            }
            
        }
        printf("%d-%02d-%02d\n",_year,_month,_day);

    }

int main() 
{

    int size=0;
    cin>>size;
    while(size--)
    {
        int year=0;
        int month=0;
        int day=0;
        int addday=0;
        cin>>year>>month>>day>>addday;
        GetNewDay(year,month,day,addday);
    }
    return 0; 
}

全部评论

相关推荐

头像
05-22 20:17
点赞 评论 收藏
转发
头像
05-13 11:19
C++
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务