Given three integers A, L, and R, the task is to count numbers from a range L to R which contains A as its suffix.
Examples:
Input: A = 2, L = 2, R = 20
Output: 2
Explanation:
Only two possible numbers from the given range that satisfies the conditions are 2 and 12.Input: A = 25, L = 25, R = 273
Output: 3
Explanation:
The three numbers from the given range that satisfies the conditions are 25, 125 and 225.
Naive Approach: The simplest approach to solve the problem is to traverse the numbers from the range L to R, and check if the number ends with A or not. For all numbers found to be true, increment the count of such numbers by 1. Finally, print the final count.
Time complexity: O(B)
Auxiliary Space: O(log2R)
Efficient Approach: To optimize the above approach, follow the steps below:
- Count and store the number of digits of A and store it in a variable, say, count.
- Raise 10 to the power of count of digits of A,i.e. 10count.
- Check for every cycle of 10count if it lies in the range [L, R]. If found to be true, then increment the count by 1.
- Print the final value of count.
Below is the implementation of the above approach:
C++
// C++ Program of the // above approach #include <bits/stdc++.h> using namespace std; // Function to count the number // ends with given number in range void countNumEnds( int A, int L, int R) { int temp, count = 0, digits; int cycle; // Find number of digits in A digits = log10 (A) + 1; // Find the power of 10 temp = pow (10, digits); cycle = temp; while (temp <= R) { if (temp >= L) count++; // Incrementing the A temp += cycle; } cout << count; } // Driver Code int main() { int A = 2, L = 2, R = 20; // Function Call countNumEnds(A, L, R); } |
Java
// Java Program of the // above approach class GFG{ // Function to count the number // ends with given number in range static void countNumEnds( int A, int L, int R) { int temp, count = 0 , digits; int cycle; // Find number of digits in A digits = ( int ) (Math.log10(A) + 1 ); // Find the power of 10 temp = ( int ) Math.pow( 10 , digits); cycle = temp; while (temp <= R) { if (temp >= L) count++; // Incrementing the A temp += cycle; } System.out.print(count); } // Driver Code public static void main(String[] args) { int A = 2 , L = 2 , R = 20 ; // Function Call countNumEnds(A, L, R); } } // This code is contributed by Rajput-Ji |
Python3
# Python3 program of the # above approach from math import log10 # Function to count the number # ends with given number in range def countNumEnds(A, L, R): count = 0 # Find number of digits in A digits = int (log10(A) + 1 ) # Find the power of 10 temp = int ( pow ( 10 , digits)) cycle = temp while (temp < = R): if (temp > = L): count + = 1 # Incrementing the A temp + = cycle print (count) # Driver Code A = 2 L = 2 R = 20 # Function call countNumEnds(A, L, R) # This code is contributed by Shivam Singh |
C#
// C# program of the // above approach using System; class GFG{ // Function to count the number // ends with given number in range static void countNumEnds( int A, int L, int R) { int temp, count = 0, digits; int cycle; // Find number of digits in A digits = ( int )(Math.Log10(A) + 1); // Find the power of 10 temp = ( int )Math.Pow(10, digits); cycle = temp; while (temp <= R) { if (temp >= L) count++; // Incrementing the A temp += cycle; } Console.Write(count); } // Driver Code public static void Main(String[] args) { int A = 2, L = 2, R = 20; // Function call countNumEnds(A, L, R); } } // This code is contributed by Amit Katiyar |
Javascript
<script> // JavaScript program for // the above approach // Function to count the number // ends with given number in range function countNumEnds(A, L, R) { let temp = 0, count = 0, digits = 0; let cycle = 0; // Find number of digits in A digits = Math.round(Math.log10(A)) + 1; // Find the power of 10 temp = Math.round(Math.pow(10, digits)); cycle = temp; while (temp <= R) { if (temp >= L) count++; // Incrementing the A temp += cycle; } document.write(count); } // Driver code let A = 2, L = 2, R = 20; // Function Call countNumEnds(A, L, R); // This code is contributed by splevel62. </script> |
2
Time Complexity: O(N), where N is the range.
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!