Find the number of times every day occurs in a month - GeeksforGeeks

08 Apr, 2021
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. 
 
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
Java
Python3
C#
Javascript
// C++ program to count occurrence of days in a month#include <bits/stdc++.h>using namespace std; // function to find occurrencesvoid 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[7];    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 functionint main(){    int n = 31;    string firstday = "Tuesday";    occurrenceDays(n, firstday);    return 0;}
// Java program to count// occurrence of days in a monthimport 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
# Python program to count# occurrence of days in a monthimport math # function to find occurrencesdef 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 functionn = 31firstday = "Tuesday"occurrenceDays(n, firstday) # This code is contributed by Gitanjali.
// C# program to count occurrence of// days in a monthusing 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[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++)        {            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.
<script> // JavaScript program to count// occurrence of days in a month     // function to find occurrences    function occurrenceDays(n, firstday)    {        // stores days in a week        let days = [ "Monday",                "Tuesday", "Wednesday",                "Thursday", "Friday",                "Saturday", "Sunday" ];                   // Initialize all counts as 4.        let count = [];        for (let i = 0; i < 7; i++)            count[i] = 4;                   // find index of the first day        let pos = 0;        for (let i = 0; i < 7; i++)        {            if (firstday == days[i])            {                pos = i;                break;            }        }                   // number of days whose occurrence        // will be 5        let inc = n - 28;                   // mark the occurrence to be 5 of n-28 days        for (let i = pos; i < pos + inc; i++)        {            if (i > 6)                count[i % 7] = 5;            else                count[i] = 5;        }                   // print the days        for (let i = 0; i < 7; i++)        {            document.write(days[i] + " " + count[i] + "<br/>");        }    }        // Driver code                 let n = 31;        let firstday = "Tuesday";        occurrenceDays(n, firstday); </script>
Output: 
Monday 4
Tuesday 5
Wednesday 5
Thursday 5
Friday 4
Saturday 4
Sunday 4
 
Akanksha_Rai
splevel62
date-time-program
Searching
Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Best First Search (Informed Search)
3 Different ways to print Fibonacci series in Java
Find whether an array is subset of another array | Added Method 5
Given a sorted and rotated array, find if there is a pair with a given sum
Recursive Programs to find Minimum and Maximum elements of array
Find closest number in array
Program to remove vowels from a String
Interpolation search vs Binary search
Find common elements in three sorted arrays
Binary Search In JavaScript