Programa para calcular el número de días impares en un número dado de años

Dado un número entero N , la tarea es encontrar el número de días impares en los años del  1 al N.
Días impares: el número de días impares se refiere a los días que quedan en un año determinado cuando los días se convierten en semanas. Digamos que un año ordinario tiene 365 días, es decir, 52 semanas y un día impar. Esto significa que, de los 365 días de un año ordinario, 364 días se convertirán en 52 semanas y quedará un día. Este día se conoce como 1 día impar. 
 

  • Simplemente el módulo del número total de días por 7 (días en una semana) nos da el número de días impares.
  • Su valor se encuentra entre 0 y 6 solamente. [0, 6]
  • Año bisiesto: cada año divisible por 400 o por 4 pero no por 100
  • Año Ordinario: Años Excepto Años Bisiestos
  • Cada Año Ordinario tiene 1 día impar.
  • Cada año bisiesto tiene 2 días impares.

Ejemplos: 
 

Entrada: N = 8 
Salida:
De los 8 años, 4 y 8 son los únicos años bisiestos. 
(6 x 1) + (2 x 2) = 10 es decir, 1 semana y 3 días
Entrada: N = 400 
Salida:
 

Acercarse: 
 

  1. Cuente el número de años ordinarios y el número de años bisiestos de N años dados.
  2. Calcular el número total de días.
  3. Imprime el módulo(7) del número total de días.

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

C++

// C++ implementation of the approach
#include <iostream>
using namespace std;
 
// Function to return the count of odd days
int oddDays(int N)
{
 
    // Count of years divisible
    // by 100 and 400
    int hund1 = N / 100;
    int hund4 = N / 400;
 
    // Every 4th year is a leap year
    int leap = N >> 2;
    int ord = N - leap;
 
    // Every 100th year is divisible by 4
    // but is not a leap year
    if (hund1) {
        ord += hund1;
        leap -= hund1;
    }
 
    // Every 400th year is divisible by 100
    // but is a leap year
    if (hund4) {
        ord -= hund4;
        leap += hund4;
    }
 
    // Total number of extra days
    int days = ord + leap * 2;
 
    // modulo(7) for final answer
    int odd = days % 7;
 
    return odd;
}
 
// Driver code
int main()
{
 
    // Number of days
    int N = 100;
    cout << oddDays(N);
 
    return 0;
}

Java

// Java implementation of the approach
class GFG {
 
    // Function to return the count of odd days
    static int oddDays(int N)
    {
        // Count of years divisible
        // by 100 and 400
        int hund1 = N / 100;
        int hund4 = N / 400;
 
        // Every 4th year is a leap year
        int leap = N >> 2;
        int ord = N - leap;
 
        // Every 100th year is divisible by 4
        // but is not a leap year
        if (hund1 > 0) {
            ord += hund1;
            leap -= hund1;
        }
 
        // Every 400th year is divisible by 100
        // but is a leap year
        if (hund4 > 0) {
            ord -= hund4;
            leap += hund4;
        }
 
        // Total number of extra days
        int days = ord + leap * 2;
 
        // modulo(7) for final answer
        int odd = days % 7;
 
        return odd;
    }
 
    // Driver code
    public static void main(String args[])
    {
 
        // Number of days
        int N = 100;
        System.out.print(oddDays(N));
    }
}

Python3

# Python3 implementation of the approach
 
# Function to return the count of odd days
def oddDays(N):
 
    # Count of years divisible
    # by 100 and 400
    hund1 = N // 100
    hund4 = N // 400
 
    # Every 4th year is a leap year
    leap = N >> 2
    ordd = N - leap
 
    # Every 100th year is divisible by 4
    # but is not a leap year
    if (hund1):
        ordd += hund1
        leap -= hund1
 
    # Every 400th year is divisible by 100
    # but is a leap year
    if (hund4):
        ordd -= hund4
        leap += hund4
 
    # Total number of extra days
    days = ordd + leap * 2
 
    # modulo(7) for final answer
    odd = days % 7
 
    return odd
 
# Driver code
 
# Number of days
N = 100
print(oddDays(N))
 
# This code is contributed
# by mohit kumar

C#

// C# implementation of the approach
using System;
 
class GFG
{
 
    // Function to return the count of odd days
    static int oddDays(int N)
    {
        // Count of years divisible
        // by 100 and 400
        int hund1 = N / 100;
        int hund4 = N / 400;
 
        // Every 4th year is a leap year
        int leap = N >> 2;
        int ord = N - leap;
 
        // Every 100th year is divisible by 4
        // but is not a leap year
        if (hund1 > 0)
        {
            ord += hund1;
            leap -= hund1;
        }
 
        // Every 400th year is divisible by 100
        // but is a leap year
        if (hund4 > 0)
        {
            ord -= hund4;
            leap += hund4;
        }
 
        // Total number of extra days
        int days = ord + leap * 2;
 
        // modulo(7) for final answer
        int odd = days % 7;
 
        return odd;
    }
 
    // Driver code
    static void Main()
    {
 
        // Number of days
        int N = 100;
        Console.WriteLine(oddDays(N));
    }
}
 
// This code is contributed by mits

PHP

<?php
// PHP implementation of the approach
 
// Function to return the count of odd days
function oddDays($N)
{
 
    // Count of years divisible
    // by 100 and 400
    $hund1 = floor($N / 100);
    $hund4 = floor($N / 400);
 
    // Every 4th year is a leap year
    $leap = $N >> 2;
    $ord = $N - $leap;
 
    // Every 100th year is divisible by 4
    // but is not a leap year
    if ($hund1)
    {
        $ord += $hund1;
        $leap -= $hund1;
    }
 
    // Every 400th year is divisible by 100
    // but is a leap year
    if ($hund4)
    {
        $ord -= $hund4;
        $leap += $hund4;
    }
 
    // Total number of extra days
    $days = $ord + $leap * 2;
 
    // modulo(7) for final answer
    $odd = $days % 7;
 
    return $odd;
}
 
// Driver code
 
// Number of days
$N = 100;
 
echo oddDays($N);
 
// This code is contributed by Ryuga
?>

Javascript

<script>
 
// JavaScript implementation of the approach   
 
// Function to return the count of odd days
    function oddDays(N) {
        // Count of years divisible
        // by 100 and 400
        var hund1 = N / 100;
        var hund4 = N / 400;
 
        // Every 4th year is a leap year
        var leap = N >> 2;
        var ord = N - leap;
 
        // Every 100th year is divisible by 4
        // but is not a leap year
        if (hund1 > 0) {
            ord += hund1;
            leap -= hund1;
        }
 
        // Every 400th year is divisible by 100
        // but is a leap year
        if (hund4 > 0) {
            ord -= hund4;
            leap += hund4;
        }
 
        // Total number of extra days
        var days = ord + leap * 2;
 
        // modulo(7) for final answer
        var odd = days % 7;
 
        return odd;
    }
 
    // Driver code
     
 
        // Number of days
        var N = 100;
        document.write(oddDays(N).toFixed());
 
// This code is contributed by todaysgaurav
 
</script>
Producción: 

5

 

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

Publicación traducida automáticamente

Artículo escrito por Krishna_Yadav 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 *