Encuentre el primer día de un año determinado a partir de un año base cuyo primer día es el lunes

Dados dos enteros Y y B que representan dos años, la tarea es encontrar el día de la semana en el que se encuentra el 1 de enero del año Y suponiendo que el 1 de enero del año B fue lunes.

Ejemplos:

Entrada:
Y = 2020
B = 1900
Salida:
miércoles
Explicación:
01/01/2020 fue miércoles considerando que 01/01/1900 fue lunes

Entrada:
Y = 2020
B = 1905
Salida:
jueves
Explicación:
01/01/2020 fue miércoles suponiendo que 01/01/1905 fuera lunes

Enfoque: siga los pasos a continuación para resolver el problema:

  1. El total de años entre el año base (B) y el año (Y) es igual a (Y – 1) – B .
  2. Número total de años bisiestos intermedios = Años totales / 4
  3. Número total de años no bisiestos intermedios = Años totales – Años bisiestos .
  4. Total de días = Total de años bisiestos * 366 + Años no bisiestos * 365 + 1 .
  5. Por lo tanto, el día 1 de enero de Y es Días totales % 7 .

A continuación se muestra la implementación del enfoque anterior:

C++14

// C++ Implementation of
// the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the day of
// 1st January of Y year
void findDay(int Y, int B)
{
    int lyear, rest, totaldays, day;
 
    // Count years between
    // years Y and B
    Y = (Y - 1) - B;
 
    // Count leap years
    lyear = Y / 4;
 
    // Non leap years
    rest = Y - lyear;
 
    // Total number of days in the years
    // lying between the years Y and B
    totaldays = (rest * 365)
                + (lyear * 366) + 1;
 
    // Actual day
    day = (totaldays % 7);
 
    if (day == 0)
        printf("Monday");
 
    else if (day == 1)
        printf("Tuesday");
 
    else if (day == 2)
        printf("Wednesday");
 
    else if (day == 3)
        printf("Thursday");
 
    else if (day == 4)
        printf("Friday");
 
    else if (day == 5)
        printf("Saturday");
 
    else if (day == 6)
        printf("Sunday");
 
    else
        printf("INPUT YEAR IS WRONG!");
}
 
// Driver Code
int main()
{
    int Y = 2020, B = 1900;
    findDay(Y, B);
 
    return 0;
}

Java

// Java program to implement
// the above approach
import java.util.*;
 
class GFG
{
 
  // Function to find the day of
  // 1st January of Y year
  static void findDay(int Y, int B)
  {
    int lyear, rest, totaldays, day;
 
    // Count years between
    // years Y and B
    Y = (Y - 1) - B;
 
    // Count leap years
    lyear = Y / 4;
 
    // Non leap years
    rest = Y - lyear;
 
    // Total number of days in the years
    // lying between the years Y and B
    totaldays = (rest * 365)
      + (lyear * 366) + 1;
 
    // Actual day
    day = (totaldays % 7);
 
    if (day == 0)
      System.out.println("Monday");
 
    else if (day == 1)
      System.out.println("Tuesday");
 
    else if (day == 2)
      System.out.println("Wednesday");
 
    else if (day == 3)
      System.out.println("Thursday");
 
    else if (day == 4)
      System.out.println("Friday");
 
    else if (day == 5)
      System.out.println("Saturday");
 
    else if (day == 6)
      System.out.println("Sunday");
 
    else
      System.out.println("INPUT YEAR IS WRONG!");
  }
 
  // Driver code
  public static void main(String[] args)
  {
    int Y = 2020, B = 1900;
    findDay(Y, B);
  }
}
 
// This code is contributed by code_hunt.

Python3

# Python program to implement
# the above approach
 
# Function to find the day of
# 1st January of Y year
def findDay(Y, B):
    lyear, rest, totaldays, day = 0, 0, 0, 0;
 
    # Count years between
    # years Y and B
    Y = (Y - 1) - B;
 
    # Count leap years
    lyear = Y // 4;
 
    # Non leap years
    rest = Y - lyear;
 
    # Total number of days in the years
    # lying between the years Y and B
    totaldays = (rest * 365) + (lyear * 366) + 1;
 
    # Actual day
    day = (totaldays % 7);
 
    if (day == 0):
        print("Monday");
 
    elif (day == 1):
        print("Tuesday");
 
    elif (day == 2):
        print("Wednesday");
 
    elif (day == 3):
        print("Thursday");
 
    elif (day == 4):
        print("Friday");
 
    elif (day == 5):
        print("Saturday");
 
    elif (day == 6):
        print("Sunday");
 
    else:
        print("INPUT YEAR IS WRONG!");
 
# Driver code
if __name__ == '__main__':
    Y = 2020; B = 1900;
    findDay(Y, B);
 
# This code is contributed by 29AjayKumar

C#

// C# program to implement
// the above approach
using System;
class GFG
{
  // Function to find the day of
  // 1st January of Y year
  static void findDay(int Y, int B)
  {
    int lyear, rest, totaldays, day;
 
    // Count years between
    // years Y and B
    Y = (Y - 1) - B;
 
    // Count leap years
    lyear = Y / 4;
 
    // Non leap years
    rest = Y - lyear;
 
    // Total number of days in the years
    // lying between the years Y and B
    totaldays = (rest * 365)
      + (lyear * 366) + 1;
 
    // Actual day
    day = (totaldays % 7);
    if (day == 0)
      Console.WriteLine("Monday");
    else if (day == 1)
      Console.WriteLine("Tuesday");
    else if (day == 2)
      Console.WriteLine("Wednesday");
    else if (day == 3)
      Console.WriteLine("Thursday");
    else if (day == 4)
      Console.WriteLine("Friday");
    else if (day == 5)
      Console.WriteLine("Saturday");
    else if (day == 6)
      Console.WriteLine("Sunday");
    else
      Console.WriteLine("INPUT YEAR IS WRONG!");
  }
 
// Driver code
static void Main()
{
    int Y = 2020, B = 1900;
    findDay(Y, B);
}
}
 
// This code is contribute by susmitakundugoaldanga

Javascript

<script>
 
// Javascript program of the above approach
 
  // Function to find the day of
  // 1st January of Y year
  function findDay(Y, B)
  {
    let lyear, rest, totaldays, day;
  
    // Count years between
    // years Y and B
    Y = (Y - 1) - B;
  
    // Count leap years
    lyear = Math.floor(Y / 4);
  
    // Non leap years
    rest = Y - lyear;
  
    // Total number of days in the years
    // lying between the years Y and B
    totaldays = (rest * 365)
      + (lyear * 366) + 1;
  
    // Actual day
    day = (totaldays % 7);
  
    if (day == 0)
      document.write("Monday");
  
    else if (day == 1)
      document.write("Tuesday");
  
    else if (day == 2)
      document.write("Wednesday");
  
    else if (day == 3)
      document.write("Thursday");
  
    else if (day == 4)
      document.write("Friday");
  
    else if (day == 5)
      document.write("Saturday");
  
    else if (day == 6)
      document.write("Sunday");
  
    else
      document.write("INPUT YEAR IS WRONG!");
  }
 
    // Driver Code
     
    // Given array
    let Y = 2020, B = 1900;
    findDay(Y, B);
  
</script>
Producción: 

Wednesday

 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1) 

Publicación traducida automáticamente

Artículo escrito por imsushant12 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *