Problem19

#include <iostream>
using namespace std;

#define START 1901
#define END   2000

bool
isLeap(int y)
{
    if (y%4 != 0 || (y%100 == 0 && y%400 != 0))
    {
        return false;
    }
    else
    {
        return true;
    }
}

int
main(int argc, char **argv)
{
    int md[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int w = 1 + 365;
    int ans = 0;

    for (int y = START; y <= END; y++)
    {
        if (isLeap(y))
        {
            md[2] = 29;
        }
        else
        {
            md[2] = 28;
        }

        for (int m = 1; m <= 12; m++)
        {
            if (w%7 == 0)
            {
                ans++;
            }
            w += md[m];
        }
    }

    cout << ans << endl;

    return 0;
}