# Find the number of times every day occurs in a month

Given the starting day and the number of days in a month. Find the number of times every day occurs in a month

Examples:

```Input : Number of days in month = 28
First day = Wednesday
Output : Monday = 4
Tuesday = 4
Wednesday = 4
Thursday = 4
Friday = 4
Saturday = 4
Sunday = 4
Explanation: In the month of February,
every day occurs 4 times.

Input : Number of days in  month = 31
First day = Tuesday
Output : Monday = 4
Tuesday = 5
Wednesday = 5
Thursday = 5
Friday = 4
Saturday = 4
Sunday = 4
Explanation: The month starts on Tuesday
and ends on Thursday.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Observations: We have to make some key observations. First one will be if the month has 28 days then every day occurs 4 times. The second one will be if it has 29 days then the day on which the month starts will occur 5 times. The third one will be if the month has 30 days, then the day on which the month starts and the next day will occur 5 days. The last one is if the month has 31 days, then the day on which the month starts and the next 2 days will occur 5 days with the rest occurring 4 times each.

Approach: Create an count array with size 7 and having an initial value of 4 as the minimum number of occurrence will be 4. (number of days-28). Find the index of the firstday. Calculate the number of days whose occurrence will be 5. Then run a loop from pos to pos+(number of days-28) to mark the occurrence as 5. If pos+(number of days-28) exceeds 6, then use %7 to get to the indexes from the beginning.

Below is the C++ implementation of the above approach:

## CPP

 `// C++ program to count occurrence of days in a month ` `#include ` `using` `namespace` `std; ` ` `  `// function to find occurrences ` `void` `occurrenceDays(``int` `n, string firstday) ` `{ ` `    ``// stores days in a week ` `    ``string days[] = { ``"Monday"``, ``"Tuesday"``, ``"Wednesday"``,  ` `           ``"Thursday"``,  ``"Friday"``, ``"Saturday"``, ``"Sunday"` `}; ` ` `  `    ``// Initialize all counts as 4. ` `    ``int` `count; ` `    ``for` `(``int` `i = 0; i < 7; i++) ` `        ``count[i] = 4; ` ` `  `    ``// find index of the first day ` `    ``int` `pos; ` `    ``for` `(``int` `i = 0; i < 7; i++) { ` `        ``if` `(firstday == days[i]) { ` `            ``pos = i; ` `            ``break``; ` `        ``} ` `    ``} ` ` `  `    ``// number of days whose occurrence will be 5 ` `    ``int` `inc = n - 28; ` ` `  `    ``// mark the occurrence to be 5 of n-28 days ` `    ``for` `(``int` `i = pos; i < pos + inc; i++) { ` `        ``if` `(i > 6) ` `            ``count[i % 7] = 5; ` `        ``else` `            ``count[i] = 5; ` `    ``} ` ` `  `    ``// print the days ` `    ``for` `(``int` `i = 0; i < 7; i++) { ` `        ``cout << days[i] << ``" "` `<< count[i] << endl; ` `    ``} ` `} ` ` `  `// driver program to test the above fucntion ` `int` `main() ` `{ ` `    ``int` `n = 31; ` `    ``string firstday = ``"Tuesday"``; ` `    ``occurrenceDays(n, firstday); ` `    ``return` `0; ` `} `

## Java

 `// Java program to count ` `// occurrence of days in a month ` `import` `java.util.*; ` `import` `java.lang.*; ` ` `  `public` `class` `GfG{ ` ` `  `    ``// function to find occurrences ` `    ``public` `static` `void` `occurrenceDays(``int` `n, String firstday) ` `    ``{ ` `        ``// stores days in a week ` `        ``String[] days = ``new` `String[]{ ``"Monday"``, ` `                ``"Tuesday"``, ``"Wednesday"``,  ` `                ``"Thursday"``, ``"Friday"``, ` `                ``"Saturday"``, ``"Sunday"` `}; ` `         `  `        ``// Initialize all counts as 4. ` `        ``int``[] count = ``new` `int``[``7``]; ` `        ``for` `(``int` `i = ``0``; i < ``7``; i++) ` `            ``count[i] = ``4``; ` `         `  `        ``// find index of the first day ` `        ``int` `pos = ``0``; ` `        ``for` `(``int` `i = ``0``; i < ``7``; i++) ` `        ``{ ` `            ``if` `(firstday == days[i])  ` `            ``{ ` `                ``pos = i; ` `                ``break``; ` `            ``} ` `        ``} ` `         `  `        ``// number of days whose occurrence ` `        ``// will be 5 ` `        ``int` `inc = n - ``28``; ` `         `  `        ``// mark the occurrence to be 5 of n-28 days ` `        ``for` `(``int` `i = pos; i < pos + inc; i++) ` `        ``{ ` `            ``if` `(i > ``6``) ` `                ``count[i % ``7``] = ``5``; ` `            ``else` `                ``count[i] = ``5``; ` `        ``} ` `         `  `        ``// print the days ` `        ``for` `(``int` `i = ``0``; i < ``7``; i++)  ` `        ``{ ` `            ``System.out.println(days[i] + ``" "` `+ count[i]); ` `        ``} ` `    ``} ` `     `  `    ``// Driver function  ` `    ``public` `static` `void` `main(String argc[]){ ` `        ``int` `n = ``31``; ` `        ``String firstday = ``"Tuesday"``; ` `        ``occurrenceDays(n, firstday); ` `    ``} ` `} ` ` `  `// This code is contributed by Sagar Shukla  `

## Python3

 `# Python program to count ` `# occurrence of days in a month ` `import` `math  ` ` `  `# function to find occurrences ` `def` `occurrenceDays( n, firstday): ` ` `  `    ``# stores days in a week ` `    ``days ``=` `[ ``"Monday"``, ``"Tuesday"``, ``"Wednesday"``,  ` `           ``"Thursday"``,  ``"Friday"``, ``"Saturday"``, ` `           ``"Sunday"` `] ` `  `  `    ``# Initialize all counts as 4. ` `    ``count``=` `[``4` `for` `i ``in` `range``(``0``,``7``)] ` `     `  `    ``# find index of the first day ` `    ``pos``=``-``1` `    ``for` `i ``in` `range``(``0``,``7``): ` `        ``if` `(firstday ``=``=` `days[i]): ` `            ``pos ``=` `i ` `            ``break` `         `  `     `  `  `  `    ``# number of days whose occurrence will be 5 ` `    ``inc ``=` `n ``-` `28` `  `  `    ``# mark the occurrence to be 5 of n-28 days ` `    ``for`  `i ``in` `range``( pos, pos ``+` `inc): ` `        ``if` `(i > ``6``): ` `            ``count[i ``%` `7``] ``=` `5` `        ``else``: ` `            ``count[i] ``=` `5` `     `  `  `  `    ``# print the days ` `    ``for` `i ``in` `range``(``0``,``7``): ` `        ``print` `(days[i] , ``" "` `, count[i]) ` `     `  ` `  `  `  `# driver program to test ` `# the above fucntion ` `n ``=` `31` `firstday ``=` `"Tuesday"` `occurrenceDays(n, firstday) ` ` `  `# This code is contributed by Gitanjali. `

## C#

 `// C# program to count occurrence of  ` `// days in a month ` `using` `System; ` ` `  `public` `class` `GfG { ` ` `  `    ``// function to find occurrences ` `    ``public` `static` `void` `occurrenceDays(``int` `n,  ` `                              ``string` `firstday) ` `    ``{ ` `         `  `        ``// stores days in a week ` `        ``String[] days = ``new` `String[]{ ``"Monday"``, ` `                        ``"Tuesday"``, ``"Wednesday"``,  ` `                          ``"Thursday"``, ``"Friday"``, ` `                        ``"Saturday"``, ``"Sunday"` `}; ` `         `  `        ``// Initialize all counts as 4. ` `        ``int``[] count = ``new` `int``; ` `         `  `        ``for` `(``int` `i = 0; i < 7; i++) ` `            ``count[i] = 4; ` `         `  `        ``// find index of the first day ` `        ``int` `pos = 0; ` `        ``for` `(``int` `i = 0; i < 7; i++) ` `        ``{ ` `            ``if` `(firstday == days[i])  ` `            ``{ ` `                ``pos = i; ` `                ``break``; ` `            ``} ` `        ``} ` `         `  `        ``// number of days whose occurrence ` `        ``// will be 5 ` `        ``int` `inc = n - 28; ` `         `  `        ``// mark the occurrence to be 5 of ` `        ``// n-28 days ` `        ``for` `(``int` `i = pos; i < pos + inc; i++) ` `        ``{ ` `            ``if` `(i > 6) ` `                ``count[i % 7] = 5; ` `            ``else` `                ``count[i] = 5; ` `        ``} ` `         `  `        ``// print the days ` `        ``for` `(``int` `i = 0; i < 7; i++)  ` `        ``{ ` `            ``Console.WriteLine(days[i] + ``" "`  `                                    ``+ count[i]); ` `        ``} ` `    ``} ` `     `  `    ``// Driver function  ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `n = 31; ` `        ``string` `firstday = ``"Tuesday"``; ` `         `  `        ``occurrenceDays(n, firstday); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

Output:

```Monday 4
Tuesday 5
Wednesday 5
Thursday 5
Friday 4
Saturday 4
Sunday 4
```

My Personal Notes arrow_drop_up Striver(underscore)79 at Codechef and codeforces D

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.