题解:P13876 [蓝桥杯 2023 省 Java/Python A] 特殊日期

· · 题解

思路

解决代码

#include <iostream>
using namespace std;
bool check(int a) // 判断闰年
{
    if (a % 400 == 0)
        return true;
    if (a % 100 == 0)
        return false;
    return (a % 4 == 0);
}
int f(int a, int b) // 计算天数
{
    if (b == 2)
    {
        return check(a) ? 29 : 28;
    }
    if (b == 4 || b == 6 || b == 9 || b == 11)
    {
        return 30;
    }
    return 31;
}
int main()
{
    long long ans = 0;
    for (int yy = 2000; yy < 2000000; yy++) // 遍历年
    {
        for (int mm = 1; mm <= 12; mm++) // 遍历月
        {
            if (yy % mm != 0)
                continue;
            int days = f(yy, mm);
            for (int dd = 1; dd <= days; dd++)
            {
                if (yy % dd == 0)
                {
                    ans++;
                }
            }
        }
    }
    int yy = 2000000;
    int mm = 1;
    int dd = 1;
    if (yy % mm == 0 && yy % dd == 0)
    {
        ans++;
    }
    cout << ans << endl;
    return 0;
}

最终答案是 35813063