日期累加问题
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d?tpId=40&tqId=31013&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan&difficulty=&judgeStatus=&tags=/question-ranking
//
// Created by chenlong666 on 2022/2/7.
//
#include <iostream>
#include <cstdio>
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 Numberofyear(int year)
{
if (IsLeapYear(year))
{
return 366;
} else
{
return 365;
}
}
int main()
{
int m,year,month,day,number;
cin>>m;
while(m--)
{
while (cin>>year>>month>>day>>number)
{
//转化为天数
int row= IsLeapYear(year);
for (int i = 0; i < month; ++i) {
number+=daytab[row][i];
}
number+=day;
//确定年
while (number> Numberofyear(year))
{
number-= Numberofyear(year);
year++;
}
//确定月
month=0;
row= IsLeapYear(year);
while (number>daytab[row][month])
{
number-=daytab[row][month];
month++;
}
day=number;
printf("%04d-%02d-%02d",year,month,day);
}
}
}
