1 条题解

  • 1
    @ 2025-2-26 15:39:59
    #include <bits/stdc++.h>
    
    using namespace std;
    
    bool isLeapYear(int year)
    {
      return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }
    int getDaysINMonth(int year ,int month)
    {
      if(month == 2) {
        return isLeapYear(year)? 29 : 28;
      }
      if(month == 4 || month == 6 || month == 9 || month == 11)
      {
        return 30;
      }
      return 31;
    }
    void nextDay(int &year,int & month,int & day)
    {
      day++;
      if(day>getDaysINMonth(year,month))
      {
        day = 1;
        month++;
        if(month>12)
        {
          month = 1;
          year++;
        }
      }
    }
    bool isPalindrome(int year,int month,int day)
    {
        char date[9];
        sprintf(date,"%04d%02d%02d",year,month,day);
        string s(date);
        string reversed(s.rbegin(),s.rend());
        return s == reversed;
    }
    int main()
    {
     int startDate, endDate;
        cin >> startDate >> endDate;
    
        // 提取起始日期的年、月、日
        int startYear = startDate / 10000;
        int startMonth = (startDate / 100) % 100;
        int startDay = startDate % 100;
    
        // 提取结束日期的年、月、日
        int endYear = endDate / 10000;
        int endMonth = (endDate / 100) % 100;
        int endDay = endDate % 100;
    
        int count = 0; // 回文日期计数器
    
        // 遍历日期范围
        while (true) {
            // 检查当前日期是否是回文日期
            if (isPalindrome(startYear, startMonth, startDay)) {
                count++;
            }
    
            // 如果当前日期等于结束日期,退出循环
            if (startYear == endYear && startMonth == endMonth && startDay == endDay) {
                break;
            }
    
            // 日期增加一天
            nextDay(startYear, startMonth, startDay);
        }
    
        cout << count << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    6062
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    113
    已通过
    35
    上传者