计算C ++中没有特定数字的n个数字

我们给定一个数字,例如num和一个整数类型变量中存储的总位数,比如digi,任务是计算那些不存在给定数字的n位数字的计数。

输入-n = 2,数字= 2

输出-计数为153

解释-没有位数2的所有两个位数(n)的计数为153,分别为10、11、13、14、15、16、17、18、19、30、31、33、34,...... 。,等等。

输入-n = 3,数字= 3

输出-计数为2187

解释-不具有数字3的所有三个数字(n)的总数为2187,分别为10、11、13、14、15、16、17、18、19、30、31、33、34,...... 。,等等。

以下程序中使用的方法如下

  • 输入数字“ n”和数字作为整数变量

  • 将这些变量传递给将执行计数操作的函数

  • 设置两个变量“ n”可以达到的最小值和最大值。例如,一个2位数的数字以最小值10开始,到99为止,类似地,一个3位数的数字以最小值100开始到999。

  • 从最小到最大开始循环

  • 在循环内,开始直到“ n”大于0

  • 检查号码是否在那里。如果数字不存在,则不执行任何操作;如果数字不存在,则将计数增加1。

示例

#include<bits/stdc++.h>
using namespace std;
int count(int n, int digit){
   int r =0;
   int count = 0;
   //计算给定数字的最小值和最大值
   int min = (int)(pow(10, n-1));
   int max = (int)(pow(10, n));
   //开始循环,直到最大值从最小值开始
   for(int i=min; i<max; i++){
      int a=i;
      int f=0;
      //而a大于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;
}

输出结果

如果运行上面的代码,我们将获得以下输出-

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