문제 201503-3 축제 CCF-CSP 솔루션

시뮬레이션 질문입니다.

양심 주제 사람들은하지 않습니다 (y_1> y_2 \) \ 샘플을. 윤년 처리합니다.

#include <bits/stdc++.h>

using namespace std;

int dayOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

bool isLunar(int year)
{
    return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}

int calendar[210][13][32];

int main()
{
    for (int year = 1850, weekday = 2; year <= 2050; year++)
    {
        dayOfMonth[2] = isLunar(year) ? 29 : 28;
        int yyear = year - 1850;
        for (int month = 1; month <= 12; month++)
        {
            for (int day = 1; day <= dayOfMonth[month]; day++)
            {
                calendar[yyear][month][day] = weekday;
                weekday = weekday % 7 + 1;
            }
        }
    }

    int a, b, c, y1, y2;
    scanf("%d%d%d%d%d", &a, &b, &c, &y1, &y2);

    for (int year = y1; year <= y2; year++)
    {
        dayOfMonth[2] = isLunar(year) ? 29 : 28;
        int yyear = year - 1850;
        int month = a;
        int cnt = 0, dday = 0;
        for (int day = 1; day <= dayOfMonth[month] && cnt < b; day++)
        {
            if (calendar[yyear][month][day] == c)
                cnt++, dday = day;
        }
        if (cnt == b)
            printf("%04d/%02d/%02d\n", year, month, dday);
        else
            printf("none\n");
    }

    return 0;
}

추천

출처www.cnblogs.com/acboyty/p/11479075.html