C++中统计不含特定数字的n位数


给定一个数字,例如num,以及存储在整数类型变量(例如digi)中的总位数,任务是计算可以形成的那些n位数的个数,其中不包含给定的数字。

输入 − n = 2, digit = 2

输出 − count is 153

说明 − 不包含数字2的所有两位数(n)的个数为153,例如10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34,.......等等。

输入 − n = 3, digit = 3

输出 − count is 2187

说明 − 不包含数字3的所有三位数(n)的个数为2187,例如100, 101, 102, …等等。

下面程序中使用的算法如下:

  • 输入数字‘n’和数字作为整型变量。

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

  • 设置两个变量min和max,表示‘n’可以达到的值。例如,两位数的最小值为10,最大值为99;三位数的最小值为100,最大值为999。

  • 从min循环到max。

  • 在循环内部,使用while循环直到‘n’大于0。

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

示例

 在线演示

#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;
}

输出

如果运行上述代码,将得到以下输出:

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

更新于:2020年6月6日

浏览量:177

开启您的职业生涯

完成课程获得认证

开始学习
广告