 Open in App
Not now

# Count of numbers from the range [L, R] which contains at least one digit that divides K

• Last Updated : 09 Jun, 2022

Given three positive integers L, R and K.The task is to find the count of all the numbers from the range [L, R] that contains at least one digit which divides the number K.

Examples:

Input: L = 5, R = 11, K = 10
Output:
5, 10 and 11 are only such numbers.

Input: L = 32, R = 38, K = 13
Output:

Approach: Initialise count = 0 and for every element in the range [L, R], check if it contains at least one digit that divides K. If yes then increment the count.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function that returns true if num``// contains at least one digit``// that divides k``bool` `digitDividesK(``int` `num, ``int` `k)``{``    ``while` `(num) {` `        ``// Get the last digit``        ``int` `d = num % 10;` `        ``// If the digit is non-zero``        ``// and it divides k``        ``if` `(d != 0 and k % d == 0)``            ``return` `true``;` `        ``// Remove the last digit``        ``num = num / 10;``    ``}` `    ``// There is no digit in num``    ``// that divides k``    ``return` `false``;``}` `// Function to return the required``// count of elements from the given``// range which contain at least one``// digit that divides k``int` `findCount(``int` `l, ``int` `r, ``int` `k)``{` `    ``// To store the result``    ``int` `count = 0;` `    ``// For every number from the range``    ``for` `(``int` `i = l; i <= r; i++) {` `        ``// If any digit of the current``        ``// number divides k``        ``if` `(digitDividesK(i, k))``            ``count++;``    ``}``    ``return` `count;``}` `// Driver code``int` `main()``{``    ``int` `l = 20, r = 35;``    ``int` `k = 45;` `    ``cout << findCount(l, r, k);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach` `class` `GFG``{``    ``// Function that returns true if num``    ``// contains at least one digit``    ``// that divides k``    ``static` `boolean` `digitDividesK(``int` `num, ``int` `k)``    ``{``        ``while` `(num != ``0``)``        ``{``    ` `            ``// Get the last digit``            ``int` `d = num % ``10``;``    ` `            ``// If the digit is non-zero``            ``// and it divides k``            ``if` `(d != ``0` `&& k % d == ``0``)``                ``return` `true``;``    ` `            ``// Remove the last digit``            ``num = num / ``10``;``        ``}``    ` `        ``// There is no digit in num``        ``// that divides k``        ``return` `false``;``    ``}``    ` `    ``// Function to return the required``    ``// count of elements from the given``    ``// range which contain at least one``    ``// digit that divides k``    ``static` `int` `findCount(``int` `l, ``int` `r, ``int` `k)``    ``{``    ` `        ``// To store the result``        ``int` `count = ``0``;``    ` `        ``// For every number from the range``        ``for` `(``int` `i = l; i <= r; i++)``        ``{``    ` `            ``// If any digit of the current``            ``// number divides k``            ``if` `(digitDividesK(i, k))``                ``count++;``        ``}``        ``return` `count;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main(String []args)``    ``{``        ``int` `l = ``20``, r = ``35``;``        ``int` `k = ``45``;``    ` `        ``System.out.println(findCount(l, r, k));``    ``}``}` `// This code is contributed by PrinciRaj1992`

## Python3

 `# Python3 implementation of the approach` `# Function that returns true if num``# contains at least one digit``# that divides k``def` `digitDividesK(num, k):``    ``while` `(num):` `        ``# Get the last digit``        ``d ``=` `num ``%` `10` `        ``# If the digit is non-zero``        ``# and it divides k``        ``if` `(d !``=` `0` `and` `k ``%` `d ``=``=` `0``):``            ``return` `True` `        ``# Remove the last digit``        ``num ``=` `num ``/``/` `10` `    ``# There is no digit in num``    ``# that divides k``    ``return` `False` `# Function to return the required``# count of elements from the given``# range which contain at least one``# digit that divides k``def` `findCount(l, r, k):` `    ``# To store the result``    ``count ``=` `0` `    ``# For every number from the range``    ``for` `i ``in` `range``(l, r ``+` `1``):` `        ``# If any digit of the current``        ``# number divides k``        ``if` `(digitDividesK(i, k)):``            ``count ``+``=` `1` `    ``return` `count` `# Driver code``l ``=` `20``r ``=` `35``k ``=` `45` `print``(findCount(l, r, k))` `# This code is contributed by Mohit Kumar`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{``    ``// Function that returns true if num``    ``// contains at least one digit``    ``// that divides k``    ``static` `bool` `digitDividesK(``int` `num, ``int` `k)``    ``{``        ``while` `(num != 0)``        ``{``    ` `            ``// Get the last digit``            ``int` `d = num % 10;``    ` `            ``// If the digit is non-zero``            ``// and it divides k``            ``if` `(d != 0 && k % d == 0)``                ``return` `true``;``    ` `            ``// Remove the last digit``            ``num = num / 10;``        ``}``    ` `        ``// There is no digit in num``        ``// that divides k``        ``return` `false``;``    ``}``    ` `    ``// Function to return the required``    ``// count of elements from the given``    ``// range which contain at least one``    ``// digit that divides k``    ``static` `int` `findCount(``int` `l, ``int` `r, ``int` `k)``    ``{``    ` `        ``// To store the result``        ``int` `count = 0;``    ` `        ``// For every number from the range``        ``for` `(``int` `i = l; i <= r; i++)``        ``{``    ` `            ``// If any digit of the current``            ``// number divides k``            ``if` `(digitDividesK(i, k))``                ``count++;``        ``}``        ``return` `count;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `l = 20, r = 35;``        ``int` `k = 45;``    ` `        ``Console.WriteLine(findCount(l, r, k));``    ``}``}` `// This code is contributed by AnkitRai01`

## Javascript

 ``

Output:

`10`

Time Complexity: O((r-l)*(log10(num)))
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up