# euler / go / src / euler / 19.go

 ``` 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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75``` ```/* 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)? Answer: 171 */ package main import "fmt" func isLeap(year int) bool { if year%100 == 0 { return year%400 == 0 } return year%4 == 0 } func numDays(month, year int) int { switch month { case 2: if isLeap(year) { return 29 } return 28 case 4, 6, 9, 11: return 30 } return 31 } func main() { weekday := 1 // Monday day, month, year := 1, 1, 1900 count := 0 for { if year > 2000 { break } if year > 1900 { if weekday == 0 && day == 1 { count += 1 } } day += 1 weekday = (weekday + 1) % 7 if day > numDays(month, year) { day = 1 month += 1 if month > 12 { month = 1 year += 1 } } } fmt.Println(count) } ```