Open In App

Count of numbers in a range that does not contain the digit M and which is divisible by M.

Last Updated : 10 Nov, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Given three integers, the lower range L, the upper range U, and a digit M. The task is to count all the numbers between L and U such that the number is divisible by M and, also, it does not contain the digit M.

Examples:  

Input: M = 9 ,L = 16 , U = 26
Output: 1
Explanation:
Within this given range ,the number that 
follows the above two given conditions is: 18.

Input: M = 6 ,L = 88 , U = 102
Output: 2
Explanation:
Within this given range ,the numbers that 
follows the above two given conditions are: 90 and 102.

Approach: 

  • The idea is to iterate from the lower range(L) to the upper range(U) and for each number,
  • We will store the distinct digits of the number in a num variable and will check if the set contains the digit M or not as per the given conditions. If the number does not contain the given digit M and is divisible by M, then the counter is incremented by 1. 
     

C++




// C++ implementation to illustrate
// the program
#include<bits/stdc++.h>
using namespace std;
 
// Function to count all the numbers
// which does not contain the digit 'M'
// and is divisible by M
void contain(int L, int U, int M)
{
    int count = 0;
    for(int j = L; j < U; j++)
    {
         
    // Storing all the distinct
    // digits of a number
    set<string> num;
    string str = to_string(j);
    num.insert(str);
         
    // Checking if the two conditions
    // are satisfied or not
    if (j % M == 0 and
        num.find(to_string(M)) == num.end())
    {
        count += 1;
    }
    }
    cout << count - 2;
}
     
// Driver code
int main()
{
    // Lower Range
    int L = 106;
     
    // Upper Range
    int U = 200;
     
    // The digit
    int M = 7;
 
    contain(L, U, M);
}
     
// This code is contributed by BhupendraSingh


Java




// Java implementation to illustrate
// the program
import java.util.*;
 
class GFG{
     
// Function to count all the numbers
// which does not contain the digit 'M'
// and is divisible by M
static void contain(int L, int U, int M)
{
    int count = 0;
    for(int j = L; j < U; j++)
    {
         
        // Storing all the distinct
        // digits of a number
        HashSet<String> num = new HashSet<>();
        String str = Integer.toString(j);
        num.add(str);
 
        // Checking if the two conditions
        // are satisfied or not
        if (j % M == 0 && !num.contains(
            Integer.toString(M)))
        {
            count += 1;
        }
    }
    System.out.println(count - 2);
}
 
// Driver code
public static void main(String[] args)
{
     
    // Lower Range
    int L = 106;
 
    // Upper Range
    int U = 200;
 
    // The digit
    int M = 7;
 
    contain(L, U, M);
}
}
 
// This code is contributed by jrishabh99


Python3




# Python3 implementation to illustrate
# the program
 
# Function to count all the numbers
# which does not contain the digit 'M'
# and is divisible by M
def contain (L,U,M):
    count = 0
    for j in range (L,U+1):
         
        # Storing all the distinct
        # digits of a number
        num = set(str(j))
         
        # Checking if the two conditions
        # are satisfied or not
        if (j % M == 0 and str(M) not in num):
            count += 1
    print (count)
     
#Driver code
if __name__== '__main__':
     
    L = 106 # Lower Range
    U = 200 # Upper Range
    M = 7 # The digit
 
    contain(L,U,M)
 
# This code is contributed by parna_28


C#




// C# implementation to illustrate
// the program
using System;
using System.Collections.Generic;
 
class GFG{
     
// Function to count all the numbers
// which does not contain the digit 'M'
// and is divisible by M
static void contain(int L, int U, int M)
{
    int count = 0;
    for(int j = L; j < U; j++)
    {
         
        // Storing all the distinct
        // digits of a number
        HashSet<string> num = new HashSet<string>();
         
        string str = j.ToString();
        num.Add(str);
 
        // Checking if the two conditions
        // are satisfied or not
        if (j % M == 0 && !num.Contains(M.ToString()))
        {
            count += 1;
        }
    }
    Console.Write(count - 2);
}
 
// Driver code
public static void Main(string[] args)
{
     
    // Lower Range
    int L = 106;
 
    // Upper Range
    int U = 200;
 
    // The digit
    int M = 7;
 
    contain(L, U, M);
}
}
 
// This code is contributed by rutvik_56


Javascript




<script>
// Javascript implementation to illustrate
// the program
 
 
// Function to count all the numbers
// which does not contain the digit 'M'
// and is divisible by M
function contain(L, U, M)
{
    let count = 0;
    for(let j = L; j < U; j++)
    {
         
        // Storing all the distinct
        // digits of a number
        let num = new Set();
        let str = String(j);
        num.add(str);
         
        // Checking if the two conditions
        // are satisfied or not
        if (j % M == 0 && !num.has(String(M)))
        {
            count += 1;
        }
    }
    document.write(count - 2);
}
     
// Driver code
 
    // Lower Range
    let L = 106;
     
    // Upper Range
    let U = 200;
     
    // The digit
    let M = 7;
 
    contain(L, U, M);
     
// This code is contributed by _saurabh_jaiswal
</script>


Output

11

Time Complexity: O(U)

Auxiliary Space: O(U)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads