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 lunesEntrada:
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:
- El total de años entre el año base (B) y el año (Y) es igual a (Y – 1) – B .
- Número total de años bisiestos intermedios = Años totales / 4
- Número total de años no bisiestos intermedios = Años totales – Años bisiestos .
- Total de días = Total de años bisiestos * 366 + Años no bisiestos * 365 + 1 .
- 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>
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