# Find the next identical calendar year

You are given an year Y, find the next identical calendar year to Y.

Examples:

```Input : 2017
Output : 2023

Input : 2018
Output : 2029
```

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

An year x is identical to a given previous year y if following two conditions are satisfied.

1. x starts with same day as y.
2. If y is leap year, then x is also. If y is not leap year, then x is also not.

The idea is to check all years one by one (starting from next year). We keep track of number of days moved ahead. If total moved days is 7, then current year begins with same day. We also check if leap-ness of current year is same as y. If both conditions are satisfied, we return current year.

```// C++ program to find next identical year
#include<iostream>
using namespace std;

// Function for finding extra days of year
// more than complete weeks
{
// If current year is a leap year, then
// it number of weekdays move ahead by
// 2 in terms of weekdays.
if (y%400==0 || y%100!=0 && y%4==0)
return 2;

// Else number of weekdays move ahead
// by 1.
return 1;
}

// Returns next identical year.
int nextYear(int y)
{
// Find number of days moved ahead by y

// Start from next year
int x = y + 1;

// Count total number of weekdays
for (int sum=0; ; x++)
{
sum = (sum + extraDays(x)) % 7;

// If sum is divisible by 7 and leap-ness
// of x is same as y, return x.
if ( sum==0 && (extraDays(x) == days))
return x;
}

return x;
}

// driver program
int main()
{
int y = 2018;
cout << nextYear(y);
return 0;
}
```

Output:

```2029
```

# GATE CS Corner    Company Wise Coding Practice

0 Average Difficulty : 0/5.0