-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathQuestion19.java
48 lines (40 loc) · 1.87 KB
/
Question19.java
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Project Euler - Question 19:
// 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)?
public class Question19 {
public static void main(String[] _Arguments) {
int[] months = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int[] currentDate = {1, 1, 1900};
int[] targetDate = {31, 12, 2000};
int trackDays = 1;
int counter = 0;
if (currentDate[2] % 4 == 0 && (currentDate[2] % 100 != 0 || currentDate[2] % 400 == 0))
months[1] = 29;
while (currentDate[0] < targetDate[0] || currentDate[1] < targetDate[1] || currentDate[2] < targetDate[2]) {
if (currentDate[2] != 1900 && currentDate[0] == 1 && trackDays == 7)
counter++;
trackDays++;
if (trackDays > 7)
trackDays = 1;
currentDate[0]++;
if (currentDate[0] > months[currentDate[1] - 1]) {
currentDate[0] = 1;
currentDate[1]++;
if (currentDate[1] > 12) {
currentDate[1] = 1;
currentDate[2]++;
if (currentDate[2] % 4 == 0 && (currentDate[2] % 100 != 0 || currentDate[2] % 400 == 0))
months[1] = 29;
else
months[1] = 28;
}
}
}
System.out.println("Answer: " + counter);
}
}