# 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:**

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

Input:A = 2, L = 2, R = 20Output:2Explanation:

Only two possible numbers from the given range that satisfies the conditions are2and12.

Input:A = 25, L = 25, R = 273Output:3Explanation:

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(log_{2}R)

**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. 10^{count}. - Check for every cycle of 10
^{count}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)