100分但subtask1不对,教教吧,求求了?
查看原帖
100分但subtask1不对,教教吧,求求了?
1342268
415chenyixuan楼主2024/10/23 19:25
#include <bits/stdc++.h>

using namespace std;

// 判断是否是闰年
bool isLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

// 判断日期是否合法
bool isValidDate(int year, int month, int day) {
    if (month < 1 || month > 12) return false;
    int daysInMonth;
    switch (month) {
        case 2:
            daysInMonth = isLeapYear(year) ? 29 : 28;
            break;
        case 4: case 6: case 9: case 11:
            daysInMonth = 30;
            break;
        default:
            daysInMonth = 31;
    }
    return day >= 1 && day <= daysInMonth;
}

// 判断是否是回文日期
bool isPalindromeDate(int year, int month, int day) {
    string dateStr = to_string(year) + (month < 10 ? "0" : "") + to_string(month) + (day < 10 ? "0" : "") + to_string(day);
    string reversedDateStr = string(dateStr.rbegin(), dateStr.rend());
    return dateStr == reversedDateStr;
}

int countPalindromeDates(string startDate, string endDate) {
    int count = 0;
    
    int startYear = stoi(startDate.substr(0, 4));
    int startMonth = stoi(startDate.substr(4, 2));
    int startDay = stoi(startDate.substr(6, 2));
    int endYear = stoi(endDate.substr(0, 4));
    int endMonth = stoi(endDate.substr(4, 2));
    int endDay = stoi(endDate.substr(6, 2));
    
    for (int year = startYear; year <= endYear; ++year) {
        for (int month = 1; month <= 12; ++month) {
            for (int day = 1; day <= 31; ++day) {
                // 检查日期是否合法
                if (!isValidDate(year, month, day)) {
                    continue;
                }
                // 检查日期是否是回文
                if (isPalindromeDate(year, month, day)) {
                    ++count;
                }
            }
        }
    }
    
    return count;
}

int main() {
    string startDate, endDate;
    cin >> startDate >> endDate;
    
    int result = countPalindromeDates(startDate, endDate);
    cout << result << endl;
    
    return 0;
}
2024/10/23 19:25
加载中...