hdu4515 小模拟
生活随笔
收集整理的這篇文章主要介紹了
hdu4515 小模拟
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? 給你當期日期,問前D天和后D天的年月日。
思路:
? ? ? 給你當期日期,問前D天和后D天的年月日。
思路:
? ? ?直接模擬就行了水題,對了別忘了題目2013,3,5要輸出這樣的2013/03/05.
#include<stdio.h> typedef struct {int n ,y ,r; }Time;int PY[13] = {0 ,31 ,28 ,31 ,30 ,31 ,30 ,31 ,31 ,30 ,31 ,30 ,31}; int RY[13] = {0 ,31 ,29 ,31 ,30 ,31 ,30 ,31 ,31 ,30 ,31 ,30 ,31};bool jude(int y) {return y % 4 == 0 && y % 100 || y % 400 == 0; }Time add(int D) {int nown = 2013 ,nowy = 3 ,nowr = 24;while(D--){nowr ++;if(jude(nown) && nowr > RY[nowy] || !jude(nown) && nowr > PY[nowy]){nowy ++;nowr = 1;}if(nowy > 12) {nown ++;nowy = 1;}} Time ans;ans.n = nown ,ans.y = nowy ,ans.r = nowr;return ans; }Time sub(int D) {int nown = 2013 ,nowy = 3 ,nowr = 24;while(D--){nowr --;if(!nowr){nowy --;if(!nowy){nowy = 12 ; nown --;}if(jude(nown)) nowr = RY[nowy];else nowr = PY[nowy];}}Time ans;ans.n = nown ,ans.y = nowy ,ans.r = nowr;return ans; }int main () {int t ,D ,i ,j ,k;scanf("%d" ,&t);while(t--){scanf("%d" ,&D);Time A = add(D);Time B = sub(D);printf("%04d/%02d/%02d %04d/%02d/%02d\n" ,A.n ,A.y ,A.r ,B.n ,B.y ,B.r);}return 0; }
總結
以上是生活随笔為你收集整理的hdu4515 小模拟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu4901 枚举状态(找集合对S(x
- 下一篇: hdu4940 有上下界的无源可行流判断