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