分析:最容易的方法就是一天一天的模拟了。
#include<iostream>
using namespace std;
int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
#define Y 2013
#define M 3
#define D 24
bool leap(int y)
{
return y%400==0 || y%4==0&&y%100!=0;
}
void change(int k,int fg) //-1回到过去,1去到未来
{
int y=Y,m=M,d=D;
while(k--)
{
if(leap(y))
a[2]=29;
else
a[2]=28;
d+=fg;
if(fg==-1)
{
if(d<=0)
{
m+=fg;
if(m<=0)
{
m=12;
y+=fg;
}
d=a[m];
}
}
else if(fg==1)
{
if(d>a[m])
{
m+=fg;
if(m>12)
{
m=1;
y+=fg;
}
d=1;
}
}
}
printf("%04d/%02d/%02d",y,m,d);
}
int main()
{
int n,m;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
change(m,1);
putchar(' ');
change(m,-1);
putchar('\n');
}
return 0;
}
HDU ACM 4515 小Q系列故事——世界上最遥远的距离
原文地址:http://blog.csdn.net/a809146548/article/details/46404687