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++ 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 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 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# 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 |
<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)