## Problem:

You are given the following information, but you may prefer to do some research for yourself.

* 1 Jan 1900 was a Monday.
* Thirty days has September,
April, June and November.
All the rest have thirty-one,
Saving February alone,
Which has twenty-eight, rain or shine.
And on leap years, twenty-nine.
* A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.

How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?

171

## Code:The solution may include methods that will be found here: Library.java .

public interface EulerSolution{

public String run();

}
/*
* Solution to Project Euler problem 19
* By Nayuki Minase
*
* http://nayuki.eigenstate.org/page/project-euler-solutions
* https://github.com/nayuki/Project-Euler-solutions
*/

public final class p019 implements EulerSolution {

public static void main(String[] args) {
System.out.println(new p019().run());
}

public String run() {
int count = 0;
for (int y = 1901; y <= 2000; y++) {
for (int m = 1; m <= 12; m++) {
if (dayOfWeek(y, m, 1) == 0)  // Sunday
count++;
}
}
return Integer.toString(count);
}

private static int dayOfWeek(int year, int month, int day) {
long m = mod((long)month - 3, 4800);
long y = mod(year + m / 12, 400);
m %= 12;
return (int)((y + y/4 - y/100 + (13 * m + 2) / 5 + day + 2) % 7);
}

private static long mod(long x, long y) {
x %= y;
if (y > 0 && x < 0 || y < 0 && x > 0)
x += y;
return x;
}

}