题目:http://acm.hdu.edu.cn/showproblem.php?pid=4515
向前和向后略有不同
#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
bool leapyear(int year){
return(year%4==0&&year0!=0)||year@0==0;
}
intmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void pre(int year,intmon,int day,int d){
day +=d;
while(day>32){
if(leapyear(year) && mon ==2){
day -= 29;
mon++;
}
else{
day -= month[mon++];
if(mon > 12){
mon = 1;
year++;
}
}
}
if(day>month[mon]){
day-=month[mon++];
}
printf("d/d/d ",year,mon,day);
}
void post(int year,int mon,int day,int d){
day -=d;
mon--;
while(day<1){
if(leapyear(year) && mon ==2){
day += 29;
mon--;
}
else{
day += month[mon--];
if(mon < 1){
mon = 12;
year--;
}
}
}
mon++;
if(mon ==13){
mon = 1;
year++;
}
printf("d/d/d\n",year,mon,day);
}
int main(){
intn,d;
scanf("%d",&n);
// freopen("C:\ProgramFile\mi.txt","w",stdout) ;
while(n--){
scanf("%d",&d);
pre(2013,3,24,d);
post(2013,3,24,d);
}
return0;
}