Given an integer N, the task is to find the number of odd days in the years from 1 to N.
Odd Days: Number of odd days refer to those days that are left in a certain year(s) when it’s days gets converted into weeks. Say, an ordinary year has 365 days, that is 52 weeks and one odd day. This means, out of the 365 days in an ordinary year, 364 days will get converted into 52 weeks and one day will remain. This one day is referred to as 1 odd day.
- Simply the modulus total number of days by 7(days in a week) gives us the number of odd days.
- It’s value lies between 0 to 6 only. [0, 6]
- Leap Year: Every year divisible either by 400 or by 4 but not 100
- Ordinary Year: Years Except Leap Years
- Every Ordinary Year has 1 odd day.
- Every Leap Year has 2 odd days.
Examples:
Input: N = 8
Output: 3
Out of the 8 years, 4 and 8 are the only leap years.
(6 x 1) + (2 x 2) = 10 i.e. 1 week and 3 days
Input: N = 400
Output: 0
Approach:
- Count number of ordinary years and number of leap years out of given N years.
- Calculate the overall number of days.
- Print the modulo(7) of the total number of days.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <iostream> using namespace std; // Function to return the count of odd days int oddDays( int N) { // Count of years divisible // by 100 and 400 int hund1 = N / 100; int hund4 = N / 400; // Every 4th year is a leap year int leap = N >> 2; int ord = N - leap; // Every 100th year is divisible by 4 // but is not a leap year if (hund1) { ord += hund1; leap -= hund1; } // Every 400th year is divisible by 100 // but is a leap year if (hund4) { ord -= hund4; leap += hund4; } // Total number of extra days int days = ord + leap * 2; // modulo(7) for final answer int odd = days % 7; return odd; } // Driver code int main() { // Number of days int N = 100; cout << oddDays(N); return 0; } |
Java
// Java implementation of the approach import java.io.*; class GFG { // Function to return the count of odd days static int oddDays( int N) { // Count of years divisible // by 100 and 400 int hund1 = N / 100 ; int hund4 = N / 400 ; // Every 4th year is a leap year int leap = N >> 2 ; int ord = N - leap; // Every 100th year is divisible by 4 // but is not a leap year if (hund1 > 0 ) { ord += hund1; leap -= hund1; } // Every 400th year is divisible by 100 // but is a leap year if (hund4 > 0 ) { ord -= hund4; leap += hund4; } // Total number of extra days int days = ord + leap * 2 ; // modulo(7) for final answer int odd = days % 7 ; return odd; } // Driver code public static void main(String args[]) { // Number of days int N = 100 ; System.out.print(oddDays(N)); } } |
Python3
# Python3 implementation of the approach # Function to return the count of odd days def oddDays(N): # Count of years divisible # by 100 and 400 hund1 = N / / 100 hund4 = N / / 400 # Every 4th year is a leap year leap = N >> 2 ordd = N - leap # Every 100th year is divisible by 4 # but is not a leap year if (hund1): ordd + = hund1 leap - = hund1 # Every 400th year is divisible by 100 # but is a leap year if (hund4): ordd - = hund4 leap + = hund4 # Total number of extra days days = ordd + leap * 2 # modulo(7) for final answer odd = days % 7 return odd # Driver code # Number of days N = 100 print (oddDays(N)) # This code is contributed # by mohit kumar |
C#
// C# implementation of the approach using System; class GFG { // Function to return the count of odd days static int oddDays( int N) { // Count of years divisible // by 100 and 400 int hund1 = N / 100; int hund4 = N / 400; // Every 4th year is a leap year int leap = N >> 2; int ord = N - leap; // Every 100th year is divisible by 4 // but is not a leap year if (hund1 > 0) { ord += hund1; leap -= hund1; } // Every 400th year is divisible by 100 // but is a leap year if (hund4 > 0) { ord -= hund4; leap += hund4; } // Total number of extra days int days = ord + leap * 2; // modulo(7) for final answer int odd = days % 7; return odd; } // Driver code static void Main() { // Number of days int N = 100; Console.WriteLine(oddDays(N)); } } // This code is contributed by mits |
PHP
<?php // PHP implementation of the approach // Function to return the count of odd days function oddDays( $N ) { // Count of years divisible // by 100 and 400 $hund1 = floor ( $N / 100); $hund4 = floor ( $N / 400); // Every 4th year is a leap year $leap = $N >> 2; $ord = $N - $leap ; // Every 100th year is divisible by 4 // but is not a leap year if ( $hund1 ) { $ord += $hund1 ; $leap -= $hund1 ; } // Every 400th year is divisible by 100 // but is a leap year if ( $hund4 ) { $ord -= $hund4 ; $leap += $hund4 ; } // Total number of extra days $days = $ord + $leap * 2; // modulo(7) for final answer $odd = $days % 7; return $odd ; } // Driver code // Number of days $N = 100; echo oddDays( $N ); // This code is contributed by Ryuga ?> |
Javascript
<script> // JavaScript implementation of the approach // Function to return the count of odd days function oddDays(N) { // Count of years divisible // by 100 and 400 var hund1 = N / 100; var hund4 = N / 400; // Every 4th year is a leap year var leap = N >> 2; var ord = N - leap; // Every 100th year is divisible by 4 // but is not a leap year if (hund1 > 0) { ord += hund1; leap -= hund1; } // Every 400th year is divisible by 100 // but is a leap year if (hund4 > 0) { ord -= hund4; leap += hund4; } // Total number of extra days var days = ord + leap * 2; // modulo(7) for final answer var odd = days % 7; return odd; } // Driver code // Number of days var N = 100; document.write(oddDays(N).toFixed()); // This code is contributed by todaysgaurav </script> |
5
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!