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

C++Server Side ProgrammingProgramming

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

 Live Demo

#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
raja
Published on 06-Jun-2020 11:55:31
Advertisements