【HDOJ】4515 小Q系列故事——世界上最遥远的距离
2014-12-22 00:06
363 查看
简单题目,先把时间都归到整年,然后再计算。同时为了防止减法出现xx月00日的情况,需要将d先多增加1,再恢复回来。
#include <cstdio> #include <cstring> #include <cstdlib> int sy, sm, sd; int ay, am, ad; int map[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 n) { if ( (n%4==0 && n%100!=0) || (n%400 == 0) ) return 366; else return 365; } void subDate(int d) { int i, j, k; sy = 2013; d += 283; while (d > isLeap(sy)) { d -= isLeap(sy); --sy; } i = isLeap(sy)==366 ? 1:0; j = 12; while (d > map[i][j]) { d -= map[i][j]; --j; } sm = j; sd = map[i][j] - d + 1; } void addDate(int d) { int i, j, k; ay = 2013; d += 83; while (d > isLeap(ay)) { d -= isLeap(ay); ++ay; } i = isLeap(ay)==366 ? 1:0; j = 1; while (d > map[i][j]) { d -= map[i][j]; ++j; } am = j; ad = d; } int main() { int t, d; #ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); //freopen("data.in", "r", stdout); #endif scanf("%d", &t); while (t--) { scanf("%d", &d); subDate(d); addDate(d); printf("%04d/%02d/%02d %04d/%02d/%02d\n", ay,am,ad, sy,sm,sd); } return 0; }
相关文章推荐
- HDOJ-4515 小Q系列故事——世界上最遥远的距离(日期问题)
- HDOJ 4515 小Q系列故事——世界上最遥远的距离
- HDU_4515 小Q系列故事——世界上最遥远的距离
- hdu---(4515)小Q系列故事——世界上最遥远的距离(模拟题)
- 杭电4515-小Q系列故事——世界上最遥远的距离
- hdu 4515 小Q系列故事——世界上最遥远的距离(模拟)
- HDU 4515 小Q系列故事——世界上最遥远的距离
- HDU 4515 小Q系列故事——世界上最遥远的距离(模拟题)
- HDU 4515 小Q系列故事——世界上最遥远的距离
- hdu 4515 小Q系列故事——世界上最遥远的距离
- hdu 4515 小Q系列故事——世界上最遥远的距离
- hdu 4515——小Q系列故事——世界上最遥远的距离
- HDU 4515 小Q系列故事——世界上最遥远的距离(模拟)
- HDU-4515 小Q系列故事——世界上最遥远的距离 模拟
- 小Q系列故事——世界上最遥远的距离
- Hdu 4515 小Q系列故事——世界上最遥远的距离 (日期模拟)
- HDU 4515 小Q系列故事——世界上最遥远的距离
- HDU4515 小Q系列故事——世界上最遥远的距离
- hdu4515 小Q系列故事——世界上最遥远的距离(C语言)
- HDOJ 题目4500 小Q系列故事——屌丝的逆袭(模拟)