Computer >> Computer tutorials >  >> Programming >> C++

Count n digit numbers not having a particular digit in C++


We are given a number let’s say, num and a total number of digits stored in an integer type variable let’s say, digi and the task is to calculate the count of those n digits numbers that can be formed where the given digit is not there.

Input − n = 2, digit = 2

Output − count is 153

Explanation − count of all two digit numbers(n) not having digit 2 is 153 as 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34,.......,etc.

Input − n = 3, digit = 3

Output − count is 2187

Explanation − count of all three digit numbers(n) not having digit 3 is 2187 as 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34,.......,etc.

Approach used in the below program is as follows

  • Input the number ‘n’ and the digit as an integer variables

  • Pass these variables to a function that will perform a count operation

  • Set two variables min and max value that ‘n’ can reach to. For example, a 2-digit number starts with a minimum value of 10 and ends till 99, similarly, 3-digit numbers start with a minimum of 100 till 999.

  • Start the loop from min to max

  • Inside the loop, start while till ‘n’ is greater than 0

  • Check if the number is there or not. If the number is there don’t perform any operation and if the number isn’t there increase the count by 1.

Example

#include<bits/stdc++.h>
using namespace std;
int count(int n, int digit){
   int r =0;
   int count = 0;
   //calculate the min and max of the given number
   int min = (int)(pow(10, n-1));
   int max = (int)(pow(10, n));
   //start the loop till max value start from min
   for(int i=min; i<max; i++){
      int a=i;
      int f=0;
      //while a is greater than 0
      while(a>0){
         r=a%10;
         a=a/10;
         if(r==digit){
            f++;
         }
         if(f==0){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int n = 2, digit = 2;
   cout<<"Count of "<<n<< digit numbers not having a particular digit "<<digit<<" is :"<<count(n, digit);
   return 0;
}

Output

If we run the above code we will get the following output −

Count of 2 digit numbers not having a particular digit 2 is :153