#include <cstdio>
int dayOfMonth[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 % 400 == 0 || year % 100 != 0 && year % 4 == 0);
}
void subtractOneDay(int &year,int &Month,int &day){
day--;
if(day < 1){
Month--;
}
if(Month < 1){
year--;
Month = 12;
}
if(day < 1){
day = dayOfMonth[isLeapYear(year)][Month];
}
}
int main(){
int YYYY,MM,DD;
int n;
scanf("%d-%d-%d",&YYYY,&MM,&DD);
scanf("%d",&n);
for(int i = 0; i < n; i++){
subtractOneDay(YYYY,MM,DD);
}
printf("%04d-%02d-%02d",YYYY,MM,DD);
}
日期减法算法
于 2023-02-20 16:10:12 首次发布