Friday, January 10, 2025
Google search engine
HomeData Modelling & AICount numbers from a given range that contains a given number as...

Count numbers from a given range that contains a given number as the suffix

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>


Output: 

2

Time Complexity: O(N), where N is the range. 
Auxiliary Space: O(1) 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments