daily pastebin goal
34%
SHARE
TWEET

HDU - 4515

a guest Mar 25th, 2019 77 in 2 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cmath>
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6. struct TIME
  7. {
  8.     int nian,yue,ri;
  9.     TIME()
  10.     {
  11.         nian = yue = ri = 0;
  12.     }
  13.     TIME(int _nian,int _yue,int _ri)
  14.     {
  15.         nian = _nian;
  16.         yue = _yue;
  17.         ri = _ri;
  18.     }
  19. };
  20. bool runnian(int year)
  21. {
  22.     return (year%4 == 0 && year%100 ||( year%400 == 0));
  23. }
  24. int PY[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
  25. int RY[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
  26. TIME cal(TIME now,int day)
  27. {
  28.     int nian = now.nian,yue = now.yue,ri = now.ri;
  29.  
  30.     bool fu = false;
  31.     if(day < 0)
  32.     {
  33.         day = -day;
  34.         fu = true;
  35.     }
  36.     if(fu)
  37.     {
  38.         for(int i=0; i<day; i++)
  39.         {
  40.             --ri;
  41.             if(ri == 0)
  42.                 --yue;
  43.             if(yue == 0)
  44.             {
  45.                 --nian;
  46.                 yue = 12;
  47.             }
  48.             if(ri == 0)
  49.             {
  50.                 if(yue == 2)
  51.                 {
  52.                     if(runnian(nian))
  53.                         ri = RY[yue];
  54.                     else ri = PY[yue];
  55.                 }
  56.                 else ri = RY[yue];
  57.             }
  58.         }
  59.     }
  60.     else
  61.     {
  62.         for(int i=0; i<day; i++)
  63.         {
  64.             ++ri;
  65.             bool run = runnian(nian);
  66.             if(run)
  67.             {
  68.                 if(ri == RY[yue]+1)
  69.                 {
  70.                     yue++;
  71.                     ri = 1;
  72.                 }
  73.             }
  74.             else
  75.             {
  76.                 if(ri == PY[yue]+1)
  77.                 {
  78.                     yue++;
  79.                     ri = 1;
  80.                 }
  81.             }
  82.             if(yue == 13)
  83.             {
  84.                 ++nian;
  85.                 yue = 1;
  86.             }
  87.         }
  88.     }
  89.     return TIME(nian,yue,ri);
  90. }
  91. int main()
  92. {
  93.     TIME now = TIME(2013,3,24);
  94.     int t;
  95.     cin>>t;
  96.     int n;
  97.     while(t--)
  98.     {
  99.         cin>>n;
  100.         TIME A = cal(now,n);
  101.         TIME B = cal(now,-n);
  102.         printf("%04d/%02d/%02d %04d/%02d/%02d\n",A.nian,A.yue,A.ri,B.nian,B.yue,B.ri);
  103.     }
  104.     return 0;
  105. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top