Se les informa que el 1 de enero de 2001 era lunes. Llamemos a un año como Geeky si el 1 de enero de ese año es domingo. Se darán dos años ‘ a ‘ y ‘ b ‘. La tarea es encontrar el no. de años Geeky entre esos dos años (incluyendo ‘a’ y ‘b’ también)
Ejemplos:
Entrada: a = 2001, b = 2013
Salida: 2Entrada: a = 2020, b = 2024
Salida: 1
Enfoque: La idea es almacenar el turno de días de cada mes y luego calcular la respuesta. Siga los pasos a continuación para resolver el problema:
- Inicialice la cuenta variable como 0 .
- Itere sobre el rango [a, b] usando la variable i y realice las siguientes tareas:
- Inicialice la variable y como i-1.
- Inicialice la variable ans como (y + y / 4 – y / 100 + y / 400) % 7.
- Si ans es igual a 6 , aumente el valor de count en 1.
- Después de realizar los pasos anteriores, imprima el valor de conteo como respuesta.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to count the total number // of years int Count(int a, int b) { // Days shifts for each month int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }; // Store the answer int count = 0; // Traverse over the years for (int i = a; i <= b; i++) { int y = i - 1; int ans = (y + y / 4 - y / 100 + y / 400) % 7; if (ans == 6) { count++; } } return count; } // Driver Code int main() { int a = 2001; int b = 2013; int ans = Count(a, b); cout << ans; } // This code is contributed by Samim Hossain Mondal.
Java
// Java program for the above approach import java.io.*; import java.lang.*; import java.util.*; class GFG { // Function to count the total number // of years public static int Count(int a, int b) { // Days shifts for each month int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }; // Store the answer int count = 0; // Traverse over the years for (int i = a; i <= b; i++) { int y = i - 1; int ans = (y + y / 4 - y / 100 + y / 400) % 7; if (ans == 6) { count++; } } return count; } // Driver Code public static void main(String[] args) { int a = 2001; int b = 2013; int ans = Count(a, b); System.out.println(ans); } }
Python3
# Python 3 program for the above approach # Function to count the total number # of years def Count(a, b): # Days shifts for each month t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4] # Store the answer count = 0 # Traverse over the years for i in range(a, b + 1): y = i - 1 ans = (y + y // 4 - y // 100 + y // 400) % 7 if (ans == 6): count += 1 return count # Driver Code if __name__ == "__main__": a = 2001 b = 2013 ans = Count(a, b) print(ans) # This code is contributed by ukasp.
C#
// C# program for the above approach using System; class GFG { // Function to count the total number // of years public static int Count(int a, int b) { // Days shifts for each month int []t = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }; // Store the answer int count = 0; // Traverse over the years for (int i = a; i <= b; i++) { int y = i - 1; int ans = (y + y / 4 - y / 100 + y / 400) % 7; if (ans == 6) { count++; } } return count; } // Driver Code public static void Main() { int a = 2001; int b = 2013; int ans = Count(a, b); Console.WriteLine(ans); } } // This code is contributed by Samim Hossain Mondal.
Javascript
<script> // JavaScript code for the above approach // Function to count the total number // of years function Count(a, b) { // Days shifts for each month let t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]; // Store the answer let count = 0; // Traverse over the years for (let i = a; i <= b; i++) { let y = i - 1; let ans = (y + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400)) % 7; if (ans == 6) { count++; } } return count; } // Driver Code let a = 2001; let b = 2013; let ans = Count(a, b); document.write(ans); // This code is contributed by Potta Lokesh </script>
Producción
2
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por varunsharma024 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA