Project Euler: Problem 19

By |

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)?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Problem19 {

    public static void main(String[] args) {

	int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	int days = 0;
	int sundays = 0;

	for (int i = 1901; i <= 2000; i++) {
	    for (int j = 0; j < months.length; j++) {
		if (days % 7 == 0) {
		    sundays++;
		}
		if (j == 1 && isLeapYear(i)) {
		    days += 29;
		} else {
		    days += months[j];
		}
		
	    }
	}
	System.out.println(sundays);

    }
    public static boolean isLeapYear(int year) {
	return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
    }
}

Lösung: 171