Cuente cuántas veces el reloj digital dado muestra dígitos idénticos

Dado un reloj digital genérico, que tiene h número de horas y m número de minutos, la tarea es encontrar cuántas veces el reloj muestra la misma hora. Se dice que una hora específica es idéntica si todos los dígitos de las horas y los minutos son iguales, es decir, la hora es del tipo D:D , D:DD , DD:D o DD:DD
Tenga en cuenta que la hora está escrita en el reloj digital sin ceros a la izquierda y el reloj muestra la hora entre 0 y h – 1 hora y 0 y m – 1 minuto. Algunos ejemplos de tiempos idénticos son: 

  • 1:1
  • 22:22
  • 3:33
  • 11:1

Ejemplos: 
 

Entrada: horas = 24, minutos = 60 
Salida: 19 
El reloj tiene 24 horas y 60 minutos. 
Entonces los tiempos idénticos serán: 
Horas de un dígito y minutos de un dígito -> 0:0, 1:1, 2:2, …., 9:9 
Horas de un dígito y minutos de dos dígitos -> 1:11, 2:22 , 3:33, 4:44 y 5:55 
Horas de dos dígitos y minutos de un dígito -> 11:1 y 22:2 
Horas de dos dígitos y minutos de dos dígitos -> 11:11, 22:22 
Total = 10 + 5 + 2 + 2 = 19
Entrada: horas = 34, minutos = 50 
Salida: 20 
 

Planteamiento: Como podemos ver en el ejemplo explicado, primero tenemos que contar las horas idénticas de un solo dígito (de horas) y luego las horas de dos dígitos. Durante cada uno de estos conteos, debemos considerar los minutos de un solo dígito, así como los minutos de dos dígitos. 
Habrá dos bucles. El primer ciclo trata con horas de un solo dígito. Y el segundo trata con horas de dos dígitos. En cada uno de los bucles, debe haber dos condiciones. Primero, si la variable del iterador es menor que el total de minutos, incremente el contador. En segundo lugar, si (variable de iterador + variable de iterador * 10) es menor que el total de minutos, incremente el contador. Al final, tendremos el total de tiempos idénticos que muestra el reloj.
 

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

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the count of
// identical times the clock shows
int countIdentical(int hours, int minutes)
{
 
    // To store the count of identical times
    // Initialized to 1 because of 0:0
    int i, count = 1;
 
    // For single digit hour
    for (i = 1; i <= 9 && i < hours; i++) {
 
        // Single digit minute
        if (i < minutes)
            count++;
 
        // Double digit minutes
        if ((i * 10 + i) < minutes)
            count++;
    }
 
    // For double digit hours
    for (i = 11; i <= 99 && i < hours; i = i + 11) {
 
        // Single digit minute
        if ((i % 10) < minutes)
            count++;
 
        // Double digit minutes
        if (i < minutes)
            count++;
    }
 
    // Return the required count
    return count;
}
 
// Driver code
int main()
{
    int hours = 24;
    int minutes = 60;
   
      // Function Call
    cout << countIdentical(hours, minutes);
 
    return 0;
}

Java

// Java implementation of the above approach
class GFG {
 
    // Function to return the count of
    // identical times the clock shows
    static int countIdentical(int hours, int minutes)
    {
 
        // To store the count of identical times
        // Initialized to 1 because of 0:0
        int i, count = 1;
 
        // For single digit hour
        for (i = 1; i <= 9 && i < hours; i++) {
 
            // Single digit minute
            if (i < minutes) {
                count++;
            }
 
            // Double digit minutes
            if ((i * 10 + i) < minutes) {
                count++;
            }
        }
 
        // For double digit hours
        for (i = 11; i <= 99 && i < hours; i = i + 11) {
 
            // Double digit minutes
            if (i < minutes) {
                count++;
            }
 
            // Single digit minute
            if ((i % 10) < minutes) {
                count++;
            }
        }
 
        // Return the required count
        return count;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int hours = 24;
        int minutes = 60;
       
        // Function Call
        System.out.println(countIdentical(hours, minutes));
    }
}
 
/* This code contributed by PrinciRaj1992 */

Python3

# Python 3 implementation of the approach
 
# Function to return the count of
# identical times the clock shows
 
 
def countIdentical(hours, minutes):
 
    # To store the count of identical times
    # Initialized to 1 because of 0:0
    count = 1
    i = 1
 
    # For single digit hour
    while(i <= 9 and i < hours):
 
        # Single digit minute
        if (i < minutes):
            count += 1
 
        # Double digit minutes
        if ((i * 10 + i) < minutes):
            count += 1
 
        i += 1
 
    # For double digit hours
    i = 11
    while(i <= 99 and i < hours):
 
         # Double digit minutes
        if (i < minutes):
            count += 1
 
        # Single digit minute
        if ((i % 10) < minutes):
            count += 1
 
        i += 11
 
    # Return the required count
    return count
 
 
# Driver code
if __name__ == '__main__':
    hours = 24
    minutes = 60
     
    # Function Call
    print(countIdentical(hours, minutes))
 
# This code is contributed by
# Surendra_Gangwar

C#

// C# implementation of the above approach
using System;
 
class GFG {
 
    // Function to return the count of
    // identical times the clock shows
    static int countIdentical(int hours, int minutes)
    {
 
        // To store the count of identical times
        // Initialized to 1 because of 0:0
        int i, count = 1;
 
        // For single digit hour
        for (i = 1; i <= 9 && i < hours; i++) {
 
            // Single digit minute
            if (i < minutes) {
                count++;
            }
 
            // Double digit minutes
            if ((i * 10 + i) < minutes) {
                count++;
            }
        }
 
        // For double digit hours
        for (i = 11; i <= 99 && i < hours; i = i + 11) {
 
            // Double digit minutes
            if (i < minutes) {
                count++;
            }
 
            // Single digit minute
            if ((i % 10) < minutes) {
                count++;
            }
        }
 
        // Return the required count
        return count;
    }
 
    // Driver code
    public static void Main(String[] args)
    {
        int hours = 24;
        int minutes = 60;
       
        // Function Call
        Console.WriteLine(countIdentical(hours, minutes));
    }
}
 
// This code has been contributed by 29AjayKumar

PHP

<?php
// PHP implementation of the approach
 
// Function to return the count of
// identical times the clock shows
function countIdentical($hours, $minutes)
{
 
    // To store the count of identical times
    // Initialized to 1 because of 0:0
    $i;
    $count = 1;
 
    // For single digit hour
    for ($i = 1; $i <= 9 && $i < $hours; $i++)
    {
 
        // Single digit minute
        if ($i < $minutes)
            $count++;
 
        // Double digit minutes
        if (($i * 10 + $i) < $minutes)
            $count++;
    }
 
    // For double digit hours
    for ($i = 11; $i <= 99 &&
                  $i < $hours; $i = $i + 11)
    {
 
         
        // Double digit minutes
        if ($i < $minutes)
            $count++;
 
        // Single digit minute
        if (($i % 10) < $minutes)
            $count++;
    }
 
    // Return the required count
    return $count;
}
 
// Driver Code
$hours = 24;
$minutes = 60;
 
// Function call
echo countIdentical($hours, $minutes);
 
// This code is contributed by ajit.
?>

Javascript

<script>
 
// javascript implementation of the above approach   
// Function to return the count of
// identical times the clock shows
    function countIdentical(hours , minutes) {
 
        // To store the count of identical times
        // Initialized to 1 because of 0:0
        var i, count = 1;
 
        // For single digit hour
        for (i = 1; i <= 9 && i < hours; i++) {
 
            // Single digit minute
            if (i < minutes) {
                count++;
            }
 
            // Double digit minutes
            if ((i * 10 + i) < minutes) {
                count++;
            }
        }
 
        // For var digit hours
        for (i = 11; i <= 99 && i < hours; i = i + 11) {
 
            // Double digit minutes
            if (i < minutes) {
                count++;
            }
 
            // Single digit minute
            if ((i % 10) < minutes) {
                count++;
            }
        }
 
        // Return the required count
        return count;
    }
 
    // Driver code
     
        var hours = 24;
        var minutes = 60;
 
        // Function Call
        document.write(countIdentical(hours, minutes));
 
// This code contributed by Rajput-Ji
 
</script>
Producción

19

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

Publicación traducida automáticamente

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