1 条题解
-
0
C++ :
#include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #include <stack> #include <queue> #include <cmath> #include <string> #include <set> #include <map> #define maxn 0 using namespace std ; int day_diff(int year_start, int month_start, int day_start , int year_end, int month_end, int day_end) { int y2, m2, d2; int y1, m1, d1; m1 = (month_start + 9) % 12; y1 = year_start - m1/10; d1 = 365*y1 + y1/4 - y1/100 + y1/400 + (m1*306 + 5)/10 + (day_start - 1); m2 = (month_end + 9) % 12; y2 = year_end - m2/10; d2 = 365*y2 + y2/4 - y2/100 + y2/400 + (m2*306 + 5)/10 + (day_end - 1); return (d2 - d1); } int main () { int n, y, m, d ; long long sum ; scanf ("%d", &n) ; while (n--) { scanf ("%d%d%d", &y, &m, &d) ; if (y < 1931) { printf ("鬼子还没来\n") ; continue ; } else if (y == 1931 && m < 9) { printf ("鬼子还没来\n") ; continue ; } else if (y == 1931 && m == 9 && d < 18) { printf ("鬼子还没来\n") ; continue ; } if ((y > 1931 && y < 1937) || (y==1931 && m > 9) || (y==1931 && m==9 && d>=18) || (y==1937 && m < 7) || (y==1937 && m==7 && d<=6)) { sum = day_diff (1931, 9, 18, y, m, d) ; printf ("抗战开始%lld天\n", sum) ; continue ; } if ((y > 1937 && y < 1945) || (y==1937 && m > 7) || (y==1937 && m==7 && d>=7) || (y==1945 && m < 8) || (y==1945 && m==8 && d<=14)) { sum = day_diff (y, m, d, 1945, 8, 14) + 1 ; printf ("离抗战胜利还有%lld天\n",sum) ; continue ; } if ((y==1945 && m > 8 && m < 9) || (y==1945 && m==8 && d>=15) || (y==1945 && m==9 && d<=2)) { printf ("全国欢庆胜利\n") ; continue ; } if (m > 9 || (m==9 && d>=3)) { sum = day_diff (y, m, d, y+1, 9, 3) ; printf ("距离下一个纪念日还有%lld天\n", sum) ; continue ; } if (m < 9 || (m==9 && d<3)) { sum = day_diff (y, m, d, y, 9, 3) ; printf ("距离下一个纪念日还有%lld天\n", sum) ; continue ; } } return 0 ; }
- 1
信息
- ID
- 2894
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者