Count how many times the given digital clock shows identical digits

Given a generic digital clock, having h number of hours and m number of minutes, the task is to find how many times the clock shows identical time. A specific time is said to be identical if every digit in the hours and minutes is same i.e. the time is of type D:D, D:DD, DD:D or DD:DD.
Note that the time is written on the digital clock without any leading zeros and the clock shows time between 0 to h – 1 hours and 0 to m – 1 minutes. Few examples of identical times are:
- 1:1
- 22:22
- 3:33
- 11:1
Examples:
Input: hours = 24, minutes = 60
Output: 19
The clock has 24 hours and 60 minutes.
So the identical times will be:
Single digit hours and single digit minutes -> 0:0, 1:1, 2:2, …., 9:9
Single digit hours and double digit minutes -> 1:11, 2:22, 3:33, 4:44 and 5:55
Double digit hours and single digit minutes -> 11:1 and 22:2
Double digit hours and double digit minutes -> 11:11, 22:22
Total = 10 + 5 + 2 + 2 = 19
Input: hours = 34, minutes = 50
Output: 20
Approach: As we can see in the explained example, we have to first count the single-digit (of hours) identical times and then double-digit hours. During each of these counts, we need to consider single-digit minutes as well as double-digit minutes.
There will be two loops. First loop deals with single-digit hours. And the second deals with double-digit hours. In each of the loops, there should be two conditions. First, if the iterator variable is less than total minutes, then increment the counter. Second, if (iterator variable + iterator variable * 10) is less than total minutes, increment the counter. In the end, we will have the total identical times that clock shows.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std;// Function to return the count of// identical times the clock showsint 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 codeint main(){ int hours = 24; int minutes = 60; // Function Call cout << countIdentical(hours, minutes); return 0;} |
Java
// Java implementation of the above approachclass 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 showsdef 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 codeif __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 approachusing 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 showsfunction 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 callecho 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
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



