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

• Last Updated : 28 Apr, 2021

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 kbool 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 kint 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 codeint 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 kdef 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 kdef 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 codel = 20r = 35k = 45 print(findCount(l, r, k)) # This code is contributed by Mohit Kumar

C#

 // C# implementation of the approachusing 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

My Personal Notes arrow_drop_up