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

来源:互联网 发布:淘宝装修教程新手入门 编辑:程序博客网 时间:2024/06/05 02:20

题目链接: hdu 4515

注意点:时间回到以前时,此时要得到day,不能直接取前一个月份的天书,而是要先得到月份,因为月份可能会回到去年的12月。

#include<iostream>#include<cstdio>using namespace std;int cy = 2013,cm = 3,cd = 24;int da[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},};int isLeap(int y){int  ret = 0;if(y%4==0&&y%100!=0||y%400==0) ret = 1;return ret;}void preDate(int n){int y = cy,m = cm,d = cd;int f = isLeap(y);while(n--){d--;if(d==0) {//d = da[f][--m]m--;    if(m==0) y--,m=12,f = isLeap(y);    d = da[f][m]; //注意点}}printf("%04d/%02d/%02d\n",y,m,d);}void laterDate(int n){int y = cy,m = cm,d = cd;int f = isLeap(y);while(n--){d++;if(d>da[f][m]){m++;if(m > 12) y++,m = 1,f = isLeap(y);d = 1;} }printf("%04d/%02d/%02d ",y,m,d);}int main(){int t,n;cin>>t;while(t--){cin>>n;laterDate(n);preDate(n);}}


0 0