año geek

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: 2

Entrada: 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

Deja una respuesta

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