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