Program to count the number of days between two years
Last Updated :
03 Jan, 2024
Given two years. Write a program to count the number of days between the two years.
Examples:
Input: startYear = 1990, endYear = 2001
Output: 4383
Explanation: Years 1992, 1996 and 2000 are leap year and all 9 others are non-leap years. So, total number of days are: 366 * 3 + 365 * 9 = 4383
Input: startYear = 1890, endYear = 1998
Output: 39811
Approach: To solve the problem, follow the below idea:
The Approach is to iterate from the starting year to the ending year, and for each of them check if the given year is a leap year or not, as leap year has 366 days while non leap year has 365 days.
Step-by-step approach:
- Iterate from startYear to endYear.
- For Each iteration, check for leap year or non-leap year.
- If year is a leap year add 366 days in the noOfDays var.
- Else add 365 days in the noOfDays.
Below is the implementation of the above approach:
C++
#include <iostream>;
using namespace std;
bool isLeapYear( int year)
{
return (year % 4 == 0 && year % 100 != 0)
|| (year % 400 == 0);
}
int daysInYear( int year)
{
if (isLeapYear(year))
return 366;
return 365;
}
int main()
{
int startYear = 1890, endYear = 1998;
int numberOfDays = 0;
for ( int year = startYear; year <= endYear; ++year) {
numberOfDays += daysInYear(year);
}
cout << "Number of days between " << startYear
<< " and " << endYear << " is: " << numberOfDays
<< " days." << endl;
return 0;
}
|
Java
public class NumberOfDaysCalculator {
public static boolean isLeapYear( int year)
{
return (year % 4 == 0 && year % 100 != 0 )
|| (year % 400 == 0 );
}
public static int daysInYear( int year)
{
return isLeapYear(year) ? 366 : 365 ;
}
public static void main(String[] args)
{
int startYear = 1890 , endYear = 1998 ;
int numberOfDays = 0 ;
for ( int year = startYear; year <= endYear;
++year) {
numberOfDays += daysInYear(year);
}
System.out.println(
"Number of days between " + startYear + " and "
+ endYear + " is: " + numberOfDays + " days." );
}
}
|
Python3
def is_leap_year(year):
return (year % 4 = = 0 and year % 100 ! = 0 ) or (year % 400 = = 0 )
def days_in_year(year):
return 366 if is_leap_year(year) else 365
def main():
start_year, end_year = 1890 , 1998
number_of_days = sum (days_in_year(year)
for year in range (start_year, end_year + 1 ))
print (
f "Number of days between {start_year} and {end_year} is: {number_of_days} days." )
if __name__ = = "__main__" :
main()
|
C#
using System;
class Program {
static bool IsLeapYear( int year)
{
return (year % 4 == 0 && year % 100 != 0)
|| (year % 400 == 0);
}
static int DaysInYear( int year)
{
return IsLeapYear(year) ? 366 : 365;
}
static void Main()
{
int startYear = 1890, endYear = 1998;
int numberOfDays = 0;
for ( int year = startYear; year <= endYear;
++year) {
numberOfDays += DaysInYear(year);
}
Console.WriteLine(
$ "Number of days between {startYear} and {endYear} is: {numberOfDays} days." );
}
}
|
Javascript
function isLeapYear(year) {
return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
}
function daysInYear(year) {
return isLeapYear(year) ? 366 : 365;
}
function main() {
let startYear = 1890, endYear = 1998;
let numberOfDays = 0;
for (let year = startYear; year <= endYear; ++year) {
numberOfDays += daysInYear(year);
}
console.log(`Number of days between ${startYear} and ${endYear} is: ${numberOfDays} days.`);
}
main();
|
Output
Number of days between 1890 and 1998 is: 39811 days.
Time Complexity: O(N), where N is the number of years between start and end year.
Auxiliary space: O(1)
Share your thoughts in the comments
Please Login to comment...