HDU 4515 小Q系列故事——世界上最遥远的距离

来源:互联网 发布:网络在线对外汉语教师 编辑:程序博客网 时间:2024/05/16 12:32

  题目大意:给定当前时期2013.3.24(坑爹啊,比赛那天是3.23啊),求解往前退d天的日期,和往后进d天的日期。水题,就是要注意~

 

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int yy,mm,dd;int leap(int y){    if((y%4==0 && y%100!=0) || y%400==0) return 1;    return 0;}void init(){    yy = 2013;    mm = 3;    dd = 23;}void solve_next(int n){    init();    while(n--)    {        dd++;        //这里切不可以写作mon[2] += leap(yy);        //不然会累加2月的天数啊         mon[2] = 28 + leap(yy);        if(dd > mon[mm])        {           dd = 1;  mm++;           if(mm>12){ mm = 1;yy++;}        }    }    printf("%04d/%02d/%02d",yy,mm,dd);}void solve_pre(int n){    init();    while(n--)    {        dd--;        mon[2] = 28 + leap(yy);        if(dd == 0)        {           mm--;           if(mm<1){ mm = 12;yy--;}           dd = mon[mm];        }    }    printf("%04d/%02d/%02d",yy,mm,dd);}int main(){    int Tcas;    scanf("%d",&Tcas);        while(Tcas--)    {        int n;        scanf("%d",&n);                solve_next(n+1);        printf(" ");        solve_pre(n-1);        puts("");    }        system("pause");    return 0;}