Рубрики

Найти следующий идентичный календарный год

Вам дан год Y, найдите следующий идентичный календарный год Y.

Примеры :

Input : 2017
Output : 2023

Input : 2018
Output : 2029

Год х совпадает с данным предыдущего года у , если выполняются следующие два условия удовлетворены.

  1. х начинается с того же дня, что и у.
  2. Если у високосный год, то х тоже. Если у не високосный год, то х тоже нет.

Идея состоит в том, чтобы проверять все годы один за другим (начиная со следующего года). Мы отслеживаем количество прошедших дней. Если общее количество перемещенных дней равно 7, то текущий год начинается с того же дня. Мы также проверяем, совпадает ли скачок текущего года с y. Если оба условия выполнены, мы возвращаем текущий год.

C ++

// C ++ программа для поиска следующего идентичного года
#include<iostream>

using namespace std;

  
// Функция поиска дополнительных дней года
// более полных недель

int extraDays(int y)

{

    // Если текущий год является високосным

    // количество дней недели вперед

    // 2 по будням.

    if (y%400==0 || y%100!=0 && y%4==0)

        return 2;

  

    // Остальное количество будних дней вперед

    // на 1.

    return 1;

}

  
// Возвращает следующий идентичный год.

int nextYear(int y)

{

    // Находим количество дней, перенесенных на y

    int days = extraDays(y);

  

    // Начало со следующего года

    int x = y + 1;

  

    // Подсчитать общее количество дней недели

    // продвинулся до сих пор.

    for (int sum=0; ; x++)

    {

        sum = (sum + extraDays(x)) % 7;

  

        // Если сумма делится на 7 и скачок

        // х совпадает с у, вернуть х.

        if ( sum==0 && (extraDays(x) == days))

            return x;

    }

  

    return x;

}

  
// драйверная программа

int main()

{

    int y = 2018;

    cout << nextYear(y);

    return 0;

}

Джава

// Java-программа для поиска следующего идентичного года

class GFG {

  
// Функция поиска дополнительных дней года
// более полных недель

static int extraDays(int y)

{

    // Если текущий год является високосным

    // количество дней недели вперед

    // 2 по будням.

    if (y % 400 == 0 || y % 100 != 0 && y % 4 == 0)

        return 2;

  

    // Остальное количество будних дней вперед

    // на 1.

    return 1;

}

  
// Возвращает следующий идентичный год.

static int nextYear(int y)

{

    // Находим количество дней, перенесенных на y

    int days = extraDays(y);

  

    // Начало со следующего года

    int x = y + 1;

  

    // Подсчитать общее количество дней недели

    // продвинулся до сих пор.

    for (int sum = 0; ; x++)

    {

        sum = (sum + extraDays(x)) % 7;

  

        // Если сумма делится на 7 и скачок

        // х совпадает с у, вернуть х.

        if ( sum == 0 && (extraDays(x) == days))

            return x;

    }

  
}

  
// Код драйвера

public static void main(String[] args)

{

    int y = 2018;

    System.out.println(nextYear(y));

}
}

  
/ * Этот код предоставлен PrinciRaj1992 * /

C #

// C # программа для поиска следующего идентичного года

using System;

      

class GFG 

{

  
// Функция поиска дополнительных дней года
// более полных недель

static int extraDays(int y)

{

    // Если текущий год является високосным

    // количество дней недели вперед

    // 2 по будням.

    if (y % 400 == 0 || y % 100 != 0 && y % 4 == 0)

        return 2;

  

    // Остальное количество будних дней вперед

    // на 1.

    return 1;

}

  
// Возвращает следующий идентичный год.

static int nextYear(int y)

{

    // Находим количество дней, перенесенных на y

    int days = extraDays(y);

  

    // Начало со следующего года

    int x = y + 1;

  

    // Подсчитать общее количество дней недели

    // продвинулся до сих пор.

    for (int sum = 0; ; x++)

    {

        sum = (sum + extraDays(x)) % 7;

  

        // Если сумма делится на 7 и скачок

        // х совпадает с у, вернуть х.

        if ( sum == 0 && (extraDays(x) == days))

            return x;

    }

  
}

  
// Код драйвера

public static void Main(String[] args)

{

    int y = 2018;

    Console.WriteLine(nextYear(y));

}
}

  
// Этот код предоставлен 29AjayKumar

PHP

<?php
// PHP программа для поиска
// следующий идентичный год

  
// Функция поиска дополнительных дней
// года больше полных недель

  

function extraDays($y)

{

    // Если текущий год является високосным,

    // затем число дней недели перемещается

    // вперед на 2 по рабочим дням.

    if ($y % 400 == 0 || 

        $y % 100 != 0 &&

        $y % 4 == 0)

        return 2;

  

    // Остальное количество будних дней

    // двигаться вперед на 1.

    return 1;

}

  
// Возвращает следующий идентичный год.

function nextYear($y)

{

    // Находим количество дней

    // продвинулся на y

    $days = extraDays($y);

  

    // Начало со следующего года

    $x = $y + 1;

  

    // Подсчитать общее количество дней недели

    // продвинулся до сих пор.

    for ($sum = 0; ; $x++)

    {

        $sum = ($sum + extraDays($x)) % 7;

  

        // Если сумма делится на 7

        // и скачок х

        // так же, как у, вернуть х.

        if ( $sum == 0 && (extraDays($x) == $days))

            return $x;

    }

  

    return $x;

}

  
// Код драйвера

$y = 2018;

echo nextYear($y);

  
// Этот код предоставлен aj_36
?>


Выход :

2029

Эта статья предоставлена Шивам Прадхан (anuj_charm) . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Найти следующий идентичный календарный год

0.00 (0%) 0 votes