1 条题解

  • 0
    @ 2025-4-12 22:06:17

    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
    上传者